{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Customize your own GPU Kernels in gQuant\n",
    "\n",
    "The gQuant is designed to accelerate quantitive finance workflows on the GPU. The acceleration on GPU is facilitated by using cuDF dataframes organized into a computation graph. The cuDF project is a continously evolving library that provides a pandas-like API. Sometimes the data scientists are facing a few challenges that cannot be easily solved:\n",
    "\n",
    "    1. The quantitative work needs customized logic to manipulate the data, and there are no direct methods within cuDF to support this logic.\n",
    "    2. Each cuDF dataframe method call launches the GPU kernel once. For performance crtical task, it is sometimes required to wrap lots of computation steps together in a single GPU kernel to reduce the kernel launch overheads.\n",
    "\n",
    "The solution is to build customized GPU kernels to implement them. The code and examples below illustrate a variety of approaches to implement customized GPU kernels in Python."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys; sys.path.insert(0, '..')\n",
    "# Load necessary Python modules\n",
    "import sys\n",
    "from gquant.dataframe_flow import TaskSpecSchema, TaskGraph\n",
    "from gquant.dataframe_flow import Node, NodePorts, PortsSpecSchema\n",
    "import cudf\n",
    "import numpy as np\n",
    "from numba import cuda\n",
    "import cupy\n",
    "import math\n",
    "import dask\n",
    "import dask_cudf"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Define a utility function to verify the results:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def verify(ground_truth, computed):\n",
    "    max_difference = (ground_truth - computed).abs().max()\n",
    "    # print('Max Difference: {}'.format(max_difference))\n",
    "    assert(max_difference < 1e-8)\n",
    "    return max_difference"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Example Problem: Calculating the distance of points to the origin\n",
    "\n",
    "The sample problem is to take a list of points in 2-D space and compute their distance to the origin.\n",
    "We start by creating a source `Node` in the graph that generates a cuDF dataframe containing some configurable number of random points. A custom node is defined by inheriting from the `Node` class and overriding methods `columns_setup` and `process`. The ports API is enabled by adding (or overriding) the `ports_setup` method. The `ports_setup` must return an instance of `NodePorts` which encapsulates the ports specs. Ports specs are dictionaries with port attributes/options per `PortsSpecSchema`.\n",
    "\n",
    "In the case of the `PointNode` below the input port is an empty dictionary, since no inputs are required, and the output port is called \"points_df_out\". When using ports the `process` API must return a dictionary where the keys correspond to the output ports. The `columns_setup` is as before except that the columns dictionaries must be per port."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "class PointNode(Node):\n",
    "    def ports_setup(self):\n",
    "        input_ports = {}\n",
    "        output_ports = {\n",
    "            'points_df_out': {\n",
    "                PortsSpecSchema.port_type: cudf.DataFrame\n",
    "            }\n",
    "        }\n",
    "\n",
    "        return NodePorts(inports=input_ports, outports=output_ports)\n",
    "\n",
    "    def columns_setup(self):\n",
    "        self.required = {}\n",
    "        self.addition = {\n",
    "           'points_df_out': {\n",
    "                'x': 'float64',\n",
    "                'y': 'float64'\n",
    "            }\n",
    "        }\n",
    "\n",
    "    def process(self, inputs):\n",
    "        npts = self.conf['npts']\n",
    "\n",
    "        df = cudf.DataFrame()\n",
    "        df['x'] = np.random.rand(npts)\n",
    "        df['y'] = np.random.rand(npts)\n",
    "\n",
    "        output = {\n",
    "            'points_df_out': df,\n",
    "        }\n",
    "\n",
    "        return output"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The distance can be computed via cuDF methods. We define the `DistanceNode` to calculate the euclidean distance and add a `distance_cudf` column to the output dataframe. We will use that as the ground truth to compare and verify results later. Additionally, the distance node calculates absolute distance (Manhattan distance) in another output port which is optional.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "class DistanceNode(Node):\n",
    "    def ports_setup(self):\n",
    "        input_ports = {\n",
    "            'points_df_in': {\n",
    "                'type': cudf.DataFrame\n",
    "            }\n",
    "        }\n",
    "\n",
    "        output_ports = {\n",
    "            'distance_euclid_df': {\n",
    "                'type': cudf.DataFrame\n",
    "            },\n",
    "            'distance_abs_df': {\n",
    "                PortsSpecSchema.port_type: cudf.DataFrame,\n",
    "                PortsSpecSchema.optional: True\n",
    "            }\n",
    "        }\n",
    "\n",
    "        return NodePorts(inports=input_ports, outports=output_ports)\n",
    "\n",
    "    def columns_setup(self):\n",
    "        self.delayed_process = True\n",
    "\n",
    "        req_cols = {\n",
    "            'x': 'float64',\n",
    "            'y': 'float64'\n",
    "        }\n",
    "\n",
    "        self.required = {\n",
    "            'points_df_in': req_cols,            \n",
    "            'distance_euclid_df': req_cols,\n",
    "            'distance_abs_df': req_cols\n",
    "        }\n",
    "\n",
    "        self.addition = {\n",
    "            'distance_euclid_df': {\n",
    "                'distance_cudf': 'float64'\n",
    "            },\n",
    "            'distance_abs_df': {\n",
    "                'distance_cudf': 'float64'\n",
    "            }\n",
    "        }\n",
    "\n",
    "    def process(self, inputs):\n",
    "        df = inputs['points_df_in']\n",
    "\n",
    "        # DEBUGGING\n",
    "        try:\n",
    "            from dask.distributed import get_worker\n",
    "            worker = get_worker()\n",
    "            print('worker{} process NODE \"{}\" worker: {}'.format(\n",
    "                worker.name, self.uid, worker))\n",
    "            # print('worker{} NODE \"{}\" df type: {}'.format(\n",
    "            #     worker.name, self.uid, type(df)))\n",
    "        except (ValueError, ImportError):\n",
    "            pass\n",
    "        \n",
    "        calc_absd = self.conf.get('calc_absd', False)\n",
    "        if calc_absd:\n",
    "            df_abs = df.copy()\n",
    "            df_abs['distance_cudf'] = df['x'].abs() + df['y'].abs()\n",
    "\n",
    "        df['distance_cudf'] = (df['x']**2 + df['y']**2).sqrt()\n",
    "        \n",
    "\n",
    "        output = {\n",
    "            'distance_euclid_df': df,\n",
    "        }\n",
    "        \n",
    "        if calc_absd:\n",
    "            output['distance_abs_df'] = df_abs\n",
    "\n",
    "        return output"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Having these two nodes, we can construct a simple task graph to compute the distance."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Task specifications.\n",
    "\n",
    "points_tspec = {\n",
    "    TaskSpecSchema.task_id: 'points_task',\n",
    "    TaskSpecSchema.node_type: PointNode,\n",
    "    TaskSpecSchema.conf: {'npts': 1000},\n",
    "    TaskSpecSchema.inputs: {},\n",
    "}\n",
    "\n",
    "cudf_distance_tspec = {\n",
    "    TaskSpecSchema.task_id: 'distance_by_cudf',\n",
    "    TaskSpecSchema.node_type: DistanceNode,\n",
    "    TaskSpecSchema.conf: {},\n",
    "    TaskSpecSchema.inputs: {\n",
    "        'points_df_in': 'points_task.points_df_out'\n",
    "    }\n",
    "}\n",
    "\n",
    "task_list = [points_tspec, cudf_distance_tspec]\n",
    "task_graph = TaskGraph(task_list)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can visualize the task graph with and without ports."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WITHOUT PORTS\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print('WITHOUT PORTS')\n",
    "task_graph.draw(show='ipynb')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WITH PORTS\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print('WITH PORTS')\n",
    "task_graph.draw(show='ipynb', show_ports=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The next step is to run the task graph to obtain the distances. The output is identified by the `id` of the distance node:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ERROR: Missing output port \"distance_abs_df\" from node \"distance_by_cudf\". This output is listed in task-graph outputs.\n"
     ]
    }
   ],
   "source": [
    "\n",
    "task_list = [points_tspec, cudf_distance_tspec]\n",
    "task_graph = TaskGraph(task_list)\n",
    "\n",
    "outlist = [\n",
    "    'points_task.points_df_out',\n",
    "    'distance_by_cudf.distance_euclid_df',\n",
    "    'distance_by_cudf.distance_abs_df'\n",
    "]\n",
    "\n",
    "try:\n",
    "    (points_df, dist_euclid_df_w_cudf, dist_abs_df_w_cudf) = \\\n",
    "        task_graph.run(outputs=outlist)\n",
    "except Exception as err:\n",
    "    print(err)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note the error above. We specified `distance_by_cudf.distance_abs_df` as an output, but in the `conf` of `cudf_distance_task_spec` we did not set `calc_absd` to be `True`. Therefore `distance_by_cudf.distance_abs_df` is not calculated (refer to process method of `DistanceNode` class above). Below we remove the `distance_by_cudf.distance_abs_df` from outlist and re-run."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "HEAD dist_euclid_df_w_cudf:\n",
      "          x         y  distance_cudf\n",
      "0  0.856288  0.102159       0.862360\n",
      "1  0.522461  0.000139       0.522461\n",
      "2  0.852728  0.568951       1.025110\n",
      "3  0.757722  0.987315       1.244562\n",
      "4  0.392707  0.126662       0.412629\n"
     ]
    }
   ],
   "source": [
    "outlist = ['distance_by_cudf.distance_euclid_df']\n",
    "(dist_euclid_df_w_cudf,) = task_graph.run(outputs=outlist)\n",
    "print('HEAD dist_euclid_df_w_cudf:\\n{}'.format(dist_euclid_df_w_cudf.head()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Why did the above run without errors even though the `DistanceNode` defines an output port `distance_abs_df`? That's because in the `ports_setup` that port is configured to be optional.\n",
    "```\n",
    "'distance_abs_df': {\n",
    "    'type': cudf.DataFrame,\n",
    "    'optional': True\n",
    "}\n",
    "```\n",
    "\n",
    "Note that instead of keywords `type` and `optional` we used `PortsSpecSchema` for these fields (to adhere to good programming practices). If we were to set `output_ports` in the `DistanceNode` as below:\n",
    "```\n",
    "output_ports = {\n",
    "    'distance_euclid_df': {\n",
    "        'type': cudf.DataFrame\n",
    "    },\n",
    "    'distance_abs_df': {\n",
    "        'type': cudf.DataFrame\n",
    "    }\n",
    "```\n",
    "Then the `distance_abs_df` would be non-optional and above would have produced an error as well. Try it out yourself by editing the `DistanceNode` and re-running the task-graph (remember to re-instantiate the `cudf_distance_task_spec`).\n",
    "\n",
    "Below we set the `conf` to calculate absolute distance."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "replace_spec = {\n",
    "    'distance_by_cudf': {\n",
    "        TaskSpecSchema.conf: {\n",
    "            'calc_absd': True\n",
    "        }\n",
    "    }\n",
    "}\n",
    "\n",
    "outlist = [\n",
    "    'points_task.points_df_out',\n",
    "    'distance_by_cudf.distance_euclid_df',\n",
    "    'distance_by_cudf.distance_abs_df'\n",
    "]\n",
    "(points_df, dist_euclid_df_w_cudf, dist_abs_df_w_cudf) = \\\n",
    "    task_graph.run(outputs=outlist, replace=replace_spec)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We could have setup the `cudf_distance_tspec` to calculate absolute distance to begin with and obtained all the outputs without errors. The above was meant to demonstrate how to work with ports."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "points_df:\n",
      "          x         y\n",
      "0  0.994778  0.920240\n",
      "1  0.536145  0.522197\n",
      "2  0.552025  0.939834\n",
      "3  0.597529  0.873719\n",
      "4  0.374750  0.841134\n",
      "\n",
      "dist_euclid_df_w_cudf:\n",
      "          x         y  distance_cudf\n",
      "0  0.994778  0.920240       1.355147\n",
      "1  0.536145  0.522197       0.748426\n",
      "2  0.552025  0.939834       1.089963\n",
      "3  0.597529  0.873719       1.058502\n",
      "4  0.374750  0.841134       0.920839\n",
      "\n",
      "dist_abs_df_w_cudf:\n",
      "          x         y  distance_cudf\n",
      "0  0.994778  0.920240       1.915018\n",
      "1  0.536145  0.522197       1.058342\n",
      "2  0.552025  0.939834       1.491859\n",
      "3  0.597529  0.873719       1.471248\n",
      "4  0.374750  0.841134       1.215884\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print('points_df:\\n{}\\n'.format(points_df.head()))\n",
    "print('dist_euclid_df_w_cudf:\\n{}\\n'.format(dist_euclid_df_w_cudf.head()))\n",
    "print('dist_abs_df_w_cudf:\\n{}\\n'.format(dist_abs_df_w_cudf.head()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Customized Kernel with Numba library\n",
    "\n",
    "Numba is an excellent python library used for accelerating numerical computations. Numba supports CUDA GPU programming by directly compiling a restricted subset of Python code into CUDA kernels and device functions. The Numba GPU kernel is written in Python and translated (JIT just-in-time compiled) into GPU code at runtime. This is achieved by decorating a Python function with `@cuda.jit`. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Just like a C/C++ CUDA GPU kernel, the `distance_kernel` function is called by thousands of threads in the GPU. The thread id is computed by `threadIdx.x`, `blockId.x` and `blockDim.x` built-in variables. Please check the [CUDA programming guild](https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#thread-hierarchy) for details."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A cuDF series can be converted to GPU arrays compatible with the Numba library via.to_gpu_array` API. The next step is to define a Node that calls this Numba kernel to compute the distance and save the result into `distance_numba` column in the output dataframe."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "import rmm\n",
    "@cuda.jit\n",
    "def distance_kernel(x, y, distance, array_len):\n",
    "    # ii - overall thread index\n",
    "    ii = cuda.threadIdx.x + cuda.blockIdx.x * cuda.blockDim.x\n",
    "    if ii < array_len:\n",
    "        distance[ii] = math.sqrt(x[ii]**2 + y[ii]**2)\n",
    "\n",
    "\n",
    "class NumbaDistanceNode(Node):\n",
    "\n",
    "    def ports_setup(self):\n",
    "        input_ports = {\n",
    "            'points_df_in': {\n",
    "                PortsSpecSchema.port_type: cudf.DataFrame\n",
    "            }\n",
    "        }\n",
    "\n",
    "        output_ports = {\n",
    "            'distance_df': {\n",
    "                PortsSpecSchema.port_type: cudf.DataFrame\n",
    "            }\n",
    "        }        \n",
    "\n",
    "        return NodePorts(inports=input_ports, outports=output_ports)\n",
    "    \n",
    "    def columns_setup(self,):\n",
    "        self.delayed_process = True\n",
    "\n",
    "        required = {'x': 'float64',\n",
    "                    'y': 'float64'}\n",
    "        self.required = {\n",
    "            'points_df_in': required,\n",
    "            'distance_df': required\n",
    "        }\n",
    "        self.addition = {\n",
    "            'distance_df': {'distance_numba': 'float64'}\n",
    "        }\n",
    "\n",
    "    def process(self, inputs):\n",
    "        df = inputs['points_df_in']\n",
    "\n",
    "        # DEBUGGING\n",
    "        try:\n",
    "            from dask.distributed import get_worker\n",
    "            worker = get_worker()\n",
    "            print('worker{} process NODE \"{}\" worker: {}'.format(\n",
    "                worker.name, self.uid, worker))\n",
    "            # print('worker{} NODE \"{}\" df type: {}'.format(\n",
    "            #     worker.name, self.uid, type(df)))\n",
    "        except (ValueError, ImportError):\n",
    "            pass\n",
    "\n",
    "        number_of_threads = 16\n",
    "        number_of_blocks = ((len(df) - 1)//number_of_threads) + 1\n",
    "        # Inits device array by setting 0 for each index.\n",
    "        # df['distance_numba'] = 0.0\n",
    "        darr = rmm.device_array(len(df))\n",
    "        distance_kernel[(number_of_blocks,), (number_of_threads,)](\n",
    "            df['x'].to_gpu_array(),\n",
    "            df['y'].to_gpu_array(),\n",
    "            darr,\n",
    "            len(df))\n",
    "        df['distance_numba'] = darr\n",
    "        return {'distance_df': df}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `self.delayed_process = True` flag in the `columns_setup` is necesary to enable the logic in the `Node` class for handling `dask_cudf` dataframes in order to use Dask (for distributed computation i.e. multi-gpu in examples later on). The `dask_cudf` dataframe does not support GPU customized kernels directly. The `to_delayed` and `from_delayed` low level interfaces of `dask_cudf` enable this support. The gQuant framework handles `dask_cudf` dataframes automatically under the hood when we set this flag."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Customized Kernel by CuPy library\n",
    "\n",
    "CuPy is an alternative to Numba. Numba JIT compiles Python code into GPU device code at runtime. There are some limitations in how Numba can be used as well as JIT compilation latency overhead. When a Python process calls a Numba GPU kernel for the first time Numba has to compile the Python code, and each time a new Python process is started the GPU kernel has to be recompiled. If advanced features of CUDA are needed and latency is important, CuPy is an alternative library that can be used to compile C/C++ CUDA code. CuPy caches the GPU device code on disk (default location `$(HOME)/.cupy/kernel_cache` which can be changed via `CUPY_CACHE_DIR` environment variable) thus eliminating compilation latency for subsequent Python processes.\n",
    "\n",
    "`CuPy` GPU kernel is esentially a C/C++ GPU kernel. Below we define the `compute_distance` kernel using `CuPy`:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Using gQuant we can now define a Node that calls this CuPy kernel to compute the distance and save the results into `distance_cupy` column of a `cudf` dataframe."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "kernel_string = r'''\n",
    "    extern \"C\" __global__\n",
    "    void compute_distance(const double* x, const double* y,\n",
    "            double* distance, int arr_len) {\n",
    "        int tid = blockDim.x * blockIdx.x + threadIdx.x;\n",
    "        if (tid < arr_len){\n",
    "        distance[tid] = sqrt(x[tid]*x[tid] + y[tid]*y[tid]);\n",
    "        }\n",
    "    }\n",
    "'''\n",
    "\n",
    "\n",
    "class CupyDistanceNode(Node):\n",
    "\n",
    "    def ports_setup(self):\n",
    "        input_ports = {\n",
    "            'points_df_in': {\n",
    "                PortsSpecSchema.port_type: cudf.DataFrame\n",
    "            }\n",
    "        }\n",
    "\n",
    "        output_ports = {\n",
    "            'distance_df': {\n",
    "                PortsSpecSchema.port_type: cudf.DataFrame\n",
    "            }\n",
    "        }\n",
    "\n",
    "        return NodePorts(inports=input_ports, outports=output_ports)\n",
    "\n",
    "    def columns_setup(self,):\n",
    "        cols_required = {'x': 'float64',\n",
    "                         'y': 'float64'}\n",
    "        self.required = {\n",
    "            'points_df_in': cols_required,\n",
    "            'distance_df': cols_required            \n",
    "        }\n",
    "\n",
    "        self.addition = {\n",
    "            'distance_df': {\n",
    "                'distance_cupy': 'float64'\n",
    "            }\n",
    "        }\n",
    "        self.delayed_process = True\n",
    "\n",
    "    def get_kernel(self):\n",
    "        raw_kernel = cupy.RawKernel(kernel_string, 'compute_distance')\n",
    "        return raw_kernel\n",
    "\n",
    "    def process(self, inputs):\n",
    "        df = inputs['points_df_in']\n",
    "        # cupy_x = cupy.asarray(df['x'.to_gpu_array())\n",
    "        # cupy_y = cupy.asarray(df['y'.to_gpu_array())\n",
    "        cupy_x = cupy.asarray(df['x'])\n",
    "        cupy_y = cupy.asarray(df['y'])\n",
    "        number_of_threads = 16\n",
    "        number_of_blocks = (len(df) - 1)//number_of_threads + 1\n",
    "        dis = cupy.ndarray(len(df), dtype=cupy.float64)\n",
    "        self.get_kernel()((number_of_blocks,), (number_of_threads,),\n",
    "                   (cupy_x, cupy_y, dis, len(df)))\n",
    "        df['distance_cupy'] = dis\n",
    "\n",
    "        return {'distance_df': df}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `self.delayed_process = True` flag is added for the same reason as with `DistanceNumbaNode` i.e. to support `dask_cudf` data frames."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Computing using the Nodes with customized GPU kernels\n",
    "\n",
    "First we construct the computation graph for gQuant."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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IkxTnZ2dqgerZGVlxcbGkmcR2dvbU10aAEwjPj4+3333nUAg+OKLL+7evevn5zd79uwjR450dXVRXRoAQSApwjRUUlLy9ttvW1tbv/76605OTunp6Xfv3t2+fbu2tjbVpQHANMVms7dv356bm0teKL17924LC4sdO3YUFBRQXRpMd0iKMF3I5fKEhIRFixa5uLicPn167969tbW1v//++/z586kuDQDgf5EXSgsEgv/3//5fSkqKp6cn2cQokUioLg2mKTyjBaY+kUj0448/fv7557W1tSEhIdu3b4+JiVFXV6e6LpjEKisr+19/8Nprr5mYmLz//vuqPubm5hYWFlSUBlOHQqFITEz89ttvz58/b2RktG3btj/96U9Yr2CcISnCVFZQUPDVV1/9+9//1tLS2rZt28svv2xjY0N1UTAVfPPNN6+88spjBoiPj1+2bNm41QNTW01NzZEjR44ePdra2hoTE/Paa6/hYAiMGyRFmIIUCsXVq1djY2MvXLgwY8aMV155ZevWrSwWi+q6YOpoamoyNzeXy+WDvstms5ubmxkMxjhXBVNbb2/v2bNnY2Njb9y44ePjs3Pnzo0bN+IEaxhrOE8RphSxWHzkyBF3d/fFixdLpdKzZ88WFxfv2rULMRFGl7GxcWho6KDnMNDp9DVr1iAmwqhjMBirVq0iL8Lz8/PbtWuXpaXlrl27qqqqqC4NpjIkRZgiysvLySua33zzzWeeeaawsDApKSk6OppGo1FdGkxNGzduHPSYTF9f3/r168e/Hpg+yKteKisr33777bi4OHt7++jo6OTkZBwkhLGAo88wcfX29iqVSk1NzccPlp6e/tVXX505c8ba2nrHjh3btm0zMDAYnwphOhOLxcbGxj09PQP6GxkZNTQ04JIpGB/kIekjR44kJye7uLjs3Llz27ZtTzwkLZPJ8HABGCK0KcIEJZFIli9ffvz48UcN0NPTc+LECU9Pz6CgIIFAcPLkyZKSkr179yImwvhgs9nR0dEDHghOp9M3b96MmAjjhjwknZSUlJWV9cwzz7zzzjsWFha7du2qrKx8zKe2bdv2/fffj1eNMLmhTREmIrFYvGTJkvT0dAcHh5KSEjW1//pJU19f/9133x0+fFgsFq9evfrNN9/08vKiqlSYzuLj42NiYgZ8i2ZmZs6ePZuqkmCaEwqFP/zwwzfffEPe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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# For comparison to above re-use points dataframe instead\n",
    "# of rand generating each time when running the task-graph.\n",
    "points_tspec.update({\n",
    "    TaskSpecSchema.load: {\n",
    "        'points_df_out': points_df\n",
    "    }\n",
    "})\n",
    "\n",
    "numba_distance_tspec = {\n",
    "    TaskSpecSchema.task_id: 'distance_by_numba',\n",
    "    TaskSpecSchema.node_type: NumbaDistanceNode,\n",
    "    TaskSpecSchema.conf: {},    \n",
    "    TaskSpecSchema.inputs: {\n",
    "        'points_df_in': 'points_task.points_df_out'\n",
    "    },\n",
    "}\n",
    "\n",
    "cupy_distance_tspec = {\n",
    "    TaskSpecSchema.task_id: 'distance_by_cupy',\n",
    "    TaskSpecSchema.node_type: CupyDistanceNode,\n",
    "    TaskSpecSchema.conf: {},\n",
    "    TaskSpecSchema.inputs: {\n",
    "        'points_df_in': 'points_task.points_df_out'\n",
    "    },\n",
    "}\n",
    "\n",
    "task_list = [\n",
    "    points_tspec,\n",
    "    cudf_distance_tspec,\n",
    "    numba_distance_tspec,\n",
    "    cupy_distance_tspec\n",
    "]\n",
    "task_graph = TaskGraph(task_list)\n",
    "\n",
    "task_graph.draw(show='ipynb', show_ports=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Then we run the tasks."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "out_list = [\n",
    "    'distance_by_cudf.distance_euclid_df',\n",
    "    'distance_by_numba.distance_df',\n",
    "    'distance_by_cupy.distance_df'\n",
    "]\n",
    "(df_w_cudf, df_w_numba, df_w_cupy) = task_graph.run(out_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "HEAD df_w_cudf:\n",
      "          x         y  distance_cudf\n",
      "0  0.994778  0.920240       1.355147\n",
      "1  0.536145  0.522197       0.748426\n",
      "2  0.552025  0.939834       1.089963\n",
      "3  0.597529  0.873719       1.058502\n",
      "4  0.374750  0.841134       0.920839\n",
      "\n",
      "HEAD df_w_numba:\n",
      "          x         y  distance_numba\n",
      "0  0.994778  0.920240        1.355147\n",
      "1  0.536145  0.522197        0.748426\n",
      "2  0.552025  0.939834        1.089963\n",
      "3  0.597529  0.873719        1.058502\n",
      "4  0.374750  0.841134        0.920839\n",
      "\n",
      "HEAD df_w_cupy:\n",
      "          x         y  distance_cupy\n",
      "0  0.994778  0.920240       1.355147\n",
      "1  0.536145  0.522197       0.748426\n",
      "2  0.552025  0.939834       1.089963\n",
      "3  0.597529  0.873719       1.058502\n",
      "4  0.374750  0.841134       0.920839\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print('HEAD df_w_cudf:\\n{}\\n'.format(df_w_cudf.head()))\n",
    "print('HEAD df_w_numba:\\n{}\\n'.format(df_w_numba.head()))\n",
    "print('HEAD df_w_cupy:\\n{}\\n'.format(df_w_cupy.head()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Use `verify` function defined above to verify the results:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Max Difference cudf to numba: 2.220446049250313e-16\n",
      "Max Difference cudf to cupy: 2.220446049250313e-16\n"
     ]
    }
   ],
   "source": [
    "mdiff = verify(df_w_cudf['distance_cudf'], df_w_numba['distance_numba'])\n",
    "print('Max Difference cudf to numba: {}'.format(mdiff))\n",
    "mdiff = verify(df_w_cudf['distance_cudf'], df_w_cupy['distance_cupy'])\n",
    "print('Max Difference cudf to cupy: {}'.format(mdiff))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To illustrate multi-input nodes let's create a verify node."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "class VerifyNode(Node):\n",
    "    def ports_setup(self):\n",
    "        input_ports = {\n",
    "            'df1': {\n",
    "                PortsSpecSchema.port_type: [cudf.DataFrame, dask_cudf.DataFrame]\n",
    "            },\n",
    "            'df2': {\n",
    "                PortsSpecSchema.port_type: [cudf.DataFrame, dask_cudf.DataFrame]\n",
    "            }\n",
    "        }\n",
    "        output_ports = {\n",
    "            'max_diff': {\n",
    "                PortsSpecSchema.port_type: float\n",
    "            }\n",
    "        }\n",
    "\n",
    "        return NodePorts(inports=input_ports, outports=output_ports)\n",
    "\n",
    "    def columns_setup(self):\n",
    "        pass\n",
    "\n",
    "    def process(self, inputs):\n",
    "        df1 = inputs['df1']\n",
    "        df2 = inputs['df2']\n",
    "        col_df1 = self.conf['df1_col']\n",
    "        col_df2 = self.conf['df2_col']\n",
    "\n",
    "        df1_col = df1[col_df1]\n",
    "        if isinstance(df1, dask_cudf.DataFrame):\n",
    "            # df1_col = df1_col.compute()\n",
    "            pass\n",
    "\n",
    "        df2_col = df2[col_df2]\n",
    "        if isinstance(df2, dask_cudf.DataFrame):\n",
    "            # df2_col = df2_col.compute()\n",
    "            pass\n",
    "\n",
    "        max_difference = (df1_col - df2_col).abs().max()\n",
    "        if isinstance(max_difference, np.float64):\n",
    "            max_difference = max_difference.item()\n",
    "\n",
    "        if isinstance(max_difference, dask.dataframe.core.Scalar):\n",
    "            max_difference = float(max_difference.compute())\n",
    "        \n",
    "        # print('Max Difference: {}'.format(max_difference))\n",
    "        # assert(max_difference < 1e-8)        \n",
    "\n",
    "        return {'max_diff': max_difference}\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzoAAAH9CAYAAADSwwmRAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzde1xUdf4/8NcAAwzDAAKK3BTwhlwExbugXEQwQc28ZJpZudZuW/pz3c2sR7nrbq3V2tKu7aa7bbk9sqLNG5oJpiWIhqgoEKDghatykTvDZfj8/ujLSQQNEDgwvJ6Pxzyc+cyZOe855zic15zP+RyFEEKAiIiIiIhIfxw2kLsCIiIiIiKi7sagQ0REREREeodBh4iIiIiI9I6R3AUQEZH+0+l0qKysRG1tLbRaLcrLywEAVVVVaGpqajVte20mJiYwMzNrt83AwACWlpZQqVQwNTXFoEGDevbDEBFRv8CgQ0REHVZeXo78/HwUFRWhpKQEZWVlKC0tRVlZWatbaWkpamtrUVVVherqajQ2NvZqnaamplCpVLCysoKZmRmsra1hY2MDa2tr6WZjYwMbGxvY2trCzs4Ozs7OUKvVvVonERH1HAVHXSMiIgCora1FdnY2cnJycPXqVeTl5aGoqAi5ubkoLCxEXl4e6urqpOkNDAzaBIc7H5ubm0s3ExOTdo+6tDy+k5mZGUxMTNrUVl9f36qtpqYGDQ0N7R4t0mq1qKurQ0VFBWpqatqEsdLSUpSWlkpHllpYWFjAyckJ9vb2cHR0hIODA5ycnODm5gY3Nze4uLi0qY2IiPqkwww6REQDSENDA3744QekpaUhMzMTOTk50q2oqEiarmUH397eHk5OThg6dCicnZ0xdOhQODk5wc7ODra2tjJ+ku6h0+lQUlKCwsJC5Ofno6CgAAUFBcjPz5fCXV5eHkpKSgD8GO7uDD5ubm5wd3eHt7c3RowYAUNDQ5k/ERER/R8GHSIifXXlyhVcuHABaWlpSE1NRWpqKq5cuYKmpiYolUqMGDECI0aMkHbY77yvUqnkLr9PqayslI525eTkSPezs7Nx7do1NDc3w8TEBB4eHvD09ISXlxc8PT0xYcIEODg4yF0+EdFAxKBDRKQPysvLcfbsWcTHxyM5ORlnzpxBcXExAMDe3h6enp7w8PCAn5+fdJ9hpns0NDTg8uXLSE9PR1paGpKTk5Geno6rV69CCAF7e3v4+flJt+nTp8PGxkbusomI9B2DDhFRf3T9+nUcP34c33zzDb777jtcv34dCoUCo0aNwqRJkzBp0iRMnjwZPj4+bUYro95RXl6Oc+fO4fvvv0dSUhK+//575OXlQaFQwN3dHYGBgQgKCkJgYCAGDx4sd7lERPqGQYeIqD8oLS3F119/LYWbnJwcqFQqTJs2DUFBQZgyZQomTZoEKysruUul+ygsLERSUhISExNx/PhxJCcnQ6fTwcvLC0FBQQgJCUFISAhHfyMienAMOkREfdXVq1dx4MABxMTE4Ntvv4UQAj4+Ppg9ezZmz54Nf3//NiOWUf9SU1ODxMRExMXFIS4uDufPn4exsTH8/f0RERGBxYsXw9HRUe4yiYj6IwYdIqK+5MqVK9i9eze+/PJLpKWlwdraGg899BDmz5+P8PBwaDQauUukHlRcXIyDBw/iwIEDiI2NhVarxeTJk7FkyRKsWLECdnZ2cpdIRNRfMOgQEcmtsrIS0dHR+PDDD5GQkAB7e3ssWbIE8+fPx8yZM2FkxGs7D0S1tbWIjY3F/v378eWXX6KmpgZz587F6tWrERERAWNjY7lLJCLqyxh0iIjkkp6ejr/85S/49NNPodPpsGDBAjzxxBMICwvj9Violbq6OuzduxcfffQR4uLiYG1tjaeeegrr1q3j8NVERO1j0CEi6m3x8fF48803ERMTgzFjxuDXv/41HnvsMQwaNEju0qgfyM3NxUcffYT33nsPpaWlWLlyJTZu3IixY8fKXRoRUV9y2EDuCoiIBorvv/8e/v7+CAgIQGlpqXQeznPPPceQQx3m7OyMV155BVevXsWOHTtw6tQpeHl54ZFHHkF2drbc5RER9RkMOkREPayoqAhPPvkkpk2bBqVSiZMnTyIhIQELFy6EgQG/hqlrTExMsGbNGqSlpeF///sfMjIy4Onpic2bN6O6ulru8oiIZMe/sEREPegf//gHxowZg+PHj+PTTz/F8ePH4e/vL3dZpEcMDAywcOFCpKSk4M0338Q///lPuLu7IyYmRu7SiIhkxaBDRNQDqqqqsHz5cjz//PN4/vnn8cMPP2DJkiVyl0U96O2334ZCoYBCoYCTk1Ovz9/IyAgvvPACsrKyMHv2bMyfPx8vvfQSmpqaer0WIqK+gIMREBF1sx9++AEPP/wwysvL8cknnyA4OFjukh5IdXU1xo8fjzFjxvAoQQf4+vqipKQEeXl5stbx4Ycf4le/+hUmT56M6OhoDB48WNZ6iIh6GQcjICLqTqmpqQgMDISNjQ3OnTvX70MOAAgh0NzcjObm5gd+L3Nz817tutfb8+tLVq9ejdOnTyM3NxfBwcG4deuW3CUREfUqBh0iom5SVFSEhx56CGPHjsXRo0f15vomGo0G2dnZOHz4sNylUCeNGzcO3377LbRaLRYsWACtVit3SUREvYZBh4iomzzxxBMwMTHB3r17oVar5S6HCADg5OSEmJgYZGRk4KWXXpK7HCKiXsOgQ0TUDb744gvExcVh9+7dvX5NnLtPgk9KSkJISAg0Gg3MzMwQFBSEhISENq8rLS3Fhg0bMGLECBgbG2PQoEGYO3cujh8/Lk2zb98+6b0VCoV0RODu9mvXrmHZsmWwsrKCjY0NIiIiWl3TpaXGmpoaJCQkSK8zMjKSpqmvr8err74Kd3d3mJmZwdraGpGRkThw4AB0Ol2Xlsn95tfU1ITPPvsMoaGhGDp0KFQqFby9vREVFdWmm96D1Pbxxx+3WlYKhQJFRUWd+jwPasyYMdi+fTv+9re/IS0trVfnTUQkG0FERA9s6tSpYvHixbLW4OPjI9RqtZg2bZo4deqUqK6uFklJSWLcuHHC2NhYnDhxQpq2sLBQuLq6Cjs7O3Hw4EFRUVEhMjMzxaJFi4RCoRC7du1q9d4LFiwQAERdXV277QsWLJDmGRsbK1QqlZg0aVKbGtVqtZgxY0a79a9Zs0ZYWlqKo0ePitraWlFUVCQ2btwoAIjjx493aZncb34HDx4UAMTrr78uysrKRHFxsXj33XeFgYGB2LhxY5dr8/HxEY6OjtLjpqYmsWHDBhEaGirKysq69Dm6Q3Nzs/D09BRPPfWUbDUQEfWiQww6REQPqKioSCgUChETEyNrHT4+PgKAOH/+fKv2ixcvCgDCx8dHalu9erUAIPbs2dNqWq1WKxwcHIRKpRJFRUVS+88FnYMHD7ZqX7x4sQAgiouLW7XfL3i4urqK6dOnt2kfPXp0jwWdwMDANu0rV64USqVSVFRUdKm2O4PO7du3RVhYmFi3bp1oamrq0mfoTm+++aYYPHiw0Ol0cpdCRNTTDrHrGhHRA0pLS4MQAlOmTJG7FKjVavj6+rZq8/b2hoODA1JSUlBYWAgA2Lt3LwBg3rx5raY1MTFBSEgI6urq8PXXX3d4vpMmTWr12NnZGQBQUFDQ4fcIDw/HqVOnsHbtWpw+fVrqEpaZmYnAwMAOv09HRUREtOqm18LHxweNjY2tunh1pbbMzExMmTIFBgYG+Otf/wpDQ8Nu/wydNWXKFBQXF+PmzZtyl0JE1OMYdIiIHlB1dTWAH0cnk5uVlVW77UOGDAEA3Lp1C/X19aioqICpqWm7NdvZ2QFAp84jsbS0bPXY2NgYADo1JPWOHTuwe/du5OTkICQkBBYWFggPD5dCWXerqKjAq6++Cm9vbwwaNEg6f+a3v/0tAKC2trbLtd2+fRsLFy6Ek5MTvvrqK3z88cc98hk6y8LCAsCPF7QlItJ3DDpERA+oJUTk5+fLXMmPAwyIdq4D3XINlSFDhsDExASWlpbQarXt7vC2/No/dOjQbq9PoVDc97nHH38ccXFxKC8vx759+yCEwKJFi7B9+/Zun19kZCS2bt2KX/ziF8jKykJzczOEEHjnnXcAoNVy7GxtRkZGiIuLw/79++Ht7Y1f/OIXSEpK6tJn6E55eXlQKBRSmCUi0mcMOkRED8jX1xdmZmaIjY2VuxRotdo2O9SXLl1CQUEBfHx8YG9vDwB4+OGHAQCHDh1qNW19fT2OHTsGlUqFsLCwbq/PzMwMDQ0N0uMxY8Zg586dAH48GpWRkQEAUCqVCA0NlUZ3u7vOB52fTqdDQkIChg4dihdeeAGDBw+WQlFdXV2b9+lsbRqNBo6OjjA3N8eBAwdgbm6OhQsXSl0H5RIbGwtPT882R+CIiPQRgw4R0QMyNTXFI488gr///e+dHga5u1laWmLz5s1ITExETU0Nzp49i5UrV8LY2BhRUVHSdG+88QZcXV2xfv16xMTEoKqqCllZWXjsscdQWFiIqKioHvnVf8KECcjKykJubi4SExORk5ODgIAA6flnn30WFy9eRH19PW7duoU333wTQggEBwd36/wMDQ0RGBiIoqIivPXWWygpKUFdXR2OHz+Of/7zn+2+V1drc3FxwRdffIHi4mIsWrQI9fX1XfosD+r27dv46KOPsHLlSlnmT0TU6+QbCIGISH+kp6cLY2NjsX37dtlqaBntKz09XYSFhQmNRiNUKpWYNWuWiI+PbzN9SUmJWL9+vXB1dRVKpVJYWlqKsLAwcezYMWmavXv3CgCtbitWrBCJiYlt2l9++WUhhGjTPm/ePOn9MjIyREBAgFCr1cLZ2Vns2LFDeu7ChQvimWeeEWPHjhVmZmbC2tpaTJ06VezatUs0Nzd3aZncb37FxcXimWeeEc7OzkKpVAo7OzuxevVqsWnTJql2Pz+/Dte2Z8+eNp/9nXfeaXdZrVixokuf50GsWbNGDB06VJSXl/f6vImIZHBIIUQ7nbmJiKjT/vjHP2Lr1q04duwY/P39e33+vr6+KCkpQV5eXq/Pm/q2//znP3j66acRHR2NRx55RO5yiIh6w2F2XSMi6iabN2/GvHnzEBkZie+//17ucogAAJ9//jnWrl2LzZs3M+QQ0YDCoENE1E0MDAywZ88ezJgxA8HBwX1mSGEamJqbm7F161Y89thjeP7557F161a5SyIi6lUMOkRE3cjExAT79u3Dxo0b8cQTT2DVqlXtjuLVnd5++20oFAqkpKQgPz8fCoUCr7zySo/OUy4t17q5323Lli1ylym70tJSRERE4A9/+AP+9Kc/Yfv27fcdapuISB/xHB0ioh6yd+9ePPnkk3B2dkZUVFSXRw4j6ighBD755BP87ne/g5GREaKjozF58mS5yyIikgPP0SEi6ikPP/wwzp8/D1dXV4SEhOCRRx7B1atX5S6L9NTZs2fh7++PVatWYd68eTh37hxDDhENaAw6REQ9yNXVFQcOHMCRI0eQnp4ODw8P/PrXv0ZOTo7cpZGeSE5OxrJlyzBlyhQYGhri7Nmz2LlzJ2xsbOQujYhIVgw6RES9ICwsDBcvXsTbb7+NQ4cOYfTo0Xj00Udx7tw5uUujfuro0aOYPXs2Jk6ciMuXL+Ozzz7Dt99+i/Hjx8tdGhFRn8CgQ0TUS5RKJZ577jlcvnwZu3fvRmZmJvz8/DBz5kx88MEHqKqqkrtE6uNu3ryJ7du3w9vbG2FhYVAoFDh69CjOnTuHxYsXc8ABIqI7cDACIiIZHT16FP/6179w4MABGBkZYdGiRVi9ejUCAwNhYMDfoghoaGhATEwMPvzwQ3z11VdQq9VYunQpnn32WUyYMEHu8oiI+qrDDDpERH1AeXk5Pv/8c+zevRsJCQmwtbXF3LlzERkZiYceeghqtVruEqkX1dbW4tixY4iOjsbBgwdRWVmJadOmYdWqVVixYgW3ByKin8egQ0TU16Snp+PLL7/E/v37kZycDLVajfDwcERGRmL27NlwcHCQu0TqAVlZWYiLi8P+/ftx4sQJNDc3Y+bMmZg/fz4eeeQRODk5yV0iEVF/wqBDRNSX5efn48CBA9LOb319PUaPHo2goCAEBQUhMDAQdnZ2cpdJXXD16lUcP34cJ06cwDfffIP8/HxoNBqEh4dj/vz5mDdvHgYNGiR3mURE/RWDDhFRf1FbW4tTp07h+PHjOH78OJKSkqDT6eDh4YEpU6Zg0qRJmDx5Mry9vaFUKuUul+5QW1uLc+fOISkpCUlJSTh16hSuX78OMzMzTJ8+HYGBgQgKCsLkyZNhZGQkd7lERPqAQYeIqL+qrq7GyZMn8d133+HMmTNITk5GZWUlTE1NMX78eEyaNAkTJkyAl5cXxo4dCzMzM7lLHhDKy8uRlpaG1NRUnD17FklJSUhLS0NTUxMGDx6MyZMnY/LkyQgMDMSUKVNgYmIid8lERPqIQYeISF80NzcjIyMDSUlJ+P7775GUlISLFy+ivr4eBgYGcHV1hZeXFzw8PODt7Q13d3eMGDECFhYWcpfeL5WUlCA7OxtpaWlIT0/HpUuXkJ6ejry8PACARqOBr6+vFGwmT54MFxcXeYsmIho4GHSIiPSZTqdDdna2tBOempqKtLQ0ZGVlobGxEQBga2uLESNGYMSIEXBzc5PuOzk5wd7eHqampjJ/CnnU1NQgNzcXeXl5yMnJQXZ2NrKzs6X7lZWVAACVSoWxY8fCy8sLnp6eUphkqCEikhWDDhHRQNTY2Nhqpz0nJ6fVzrxWq5WmtbGxgb29PZycnDB06FA4OTnBzs4Otra2sLa2hq2tLWxsbGBtbQ2NRiPjp/p55eXlKCkpQVlZGUpLS1FWVoaSkhIUFBSgsLAQeXl5KCoqQl5eXqsLuGo0mnbDoJubG1xcXHjNIyKivodBh4iI2iooKEB+fn6bnf+Wf2/evImSkhI0Nze3ep1SqZRCj0qlwqBBg2BqagqVSgVLS0uYmJjA3NwcGo1GOune0tKyVVAwMjJqE5jKy8tx55+rxsZGVFdXAwDq6+tRW1uLiooK1NfXo7q6GtXV1aivr0dFRQWqq6ulYNNevba2trC3t4eDg0OrW0u4c3R0xODBg7t1+RIRUY9j0CEioq678wjJnUdJysrKUFdXh9u3b0Or1aKurg7l5eWor69HTU0NKisrodPp0NzcjIqKilbv2RJc7nRnMAIAhUIBKysrAICxsTHUajUsLCxgYmICjUYDc3NzmJqawsLCAubm5rC2toa1tTVsbGykW384AkVERF3GoENERH1TcHAw3N3d8d5778ldChER9T+H2amYiIiIiIj0DoMOERERERHpHQYdIiIiIiLSOww6RERERESkdxh0iIiIiIhI7zDoEBERERGR3mHQISIiIiIivcOgQ0REREREeodBh4iIiIiI9A6DDhERERER6R0GHSIiIiIi0jsMOkREREREpHcYdIiIiIiISO8w6BARERERkd5h0CEiIiIiIr3DoENERERERHqHQYeIiIiIiPQOgw4REREREekdBh0iIiIiItI7DDpERERERKR3GHSIiIiIiEjvMOgQEREREZHeYdAhIiIiIiK9w6BDRESkBz799FMoFAooFAqYmpq2O81nn30GX19fqFQqadrU1NRerpSIqHcw6BAR0YBVXV2NUaNGISIiQu5SHtijjz4KIQRCQkLafT4hIQHLly/HnDlzUFxcjCtXrsDJyamXqyQi6j0MOkRENGAJIdDc3Izm5uYHfi9zc3P4+/t3Q1U9Izo6GkIIrFu3Dubm5hgxYgRyc3Ph5eUld2kA+v7yI6L+x0juAoiIiOSi0WiQnZ0tdxm9Ijc3FwBgY2MjcyVERL2DR3SIiIgGAJ1OJ3cJRES9ikGHiIj6rAsXLkgnzTs5OSEpKQkhISHQaDQwMzNDUFAQEhIS2ryutLQUGzZswIgRI2BsbIxBgwZh7ty5OH78uDTNvn37pPdWKBTQarXttl+7dg3Lli2DlZUVbGxsEBER0eoo0Ntvvw2FQoGamhokJCRIrzMy+qnTRH19PV599VW4u7vDzMwM1tbWiIyMxIEDB7ocQDIyMrBw4UJYWlpCrVYjICAA8fHxbaZr+Tz79+8HAGkggqlTp3Z6nh1Zrn/84x+lZXBnV7QjR45I7ba2tlJ7R5YfEVGXCCIioj4oKChI/PKXvxRCCOHj4yPUarWYNm2aOHXqlKiurhZJSUli3LhxwtjYWJw4cUJ6XWFhoXB1dRV2dnbi4MGDoqKiQmRmZopFixYJhUIhdu3a1Wo+CxYsEABEXV1du+0LFiyQ5hkbGytUKpWYNGlSm3rVarWYMWNGu59lzZo1wtLSUhw9elTU1taKoqIisXHjRgFAHD9+vNPL5vLly8LKyko4OjqKo0ePiqqqKnHx4kUxZ84c4eLiIkxMTNq85l6fs6M6u1zvtTz8/PyEjY1Nm/b7LT8ioi44xCM6RETUL9TU1OC9997DtGnToFarMXHiRHz88cdoaGjAunXrpOleeuklXL16FX/9618REREBCwsLjB49Gp988gns7e3xwgsv4ObNmx2e75o1a6R5zp49G/PmzUNSUhJKSko6/B7Hjh2Dp6cnQkNDoVKpYGdnh7feegujR4/u1DJosXnzZpSXlyMqKgqhoaEwNzeHt7c3/vOf/6CwsLBL7/lzunu5EhH1NAYdIiLqF9RqNXx9fVu1eXt7w8HBASkpKdIO/t69ewEA8+bNazWtiYkJQkJCUFdXh6+//rrD8500aVKrx87OzgCAgoKCDr9HeHg4Tp06hbVr1+L06dNSd7XMzEwEBgZ2+H1aHDlyBAAQFhbWqt3BwaHL4enndPdyJSLqaQw6RETUL1hZWbXbPmTIEADArVu3UF9fj4qKCpiamkKj0bSZ1s7ODgBQVFTU4flaWlq2emxsbAwAnRqSeseOHdi9ezdycnIQEhICCwsLhIeHS+GhM+rr61FVVQVTU1OYm5u3eb5leXSnnliuREQ9jUGHiIj6hdLSUggh2rTfunULwI87+CYmJrC0tIRWq0VVVVWbaVu6Vg0dOrTb61MoFPd97vHHH0dcXBzKy8uxb98+CCGwaNEibN++vVPzMTExgUajgVarRXV1dZvny8rKOl17R+bZ2eVqYGCAhoaGNtOWl5e3O4/7LT8ioq5g0CEion5Bq9UiKSmpVdulS5dQUFAAHx8f2NvbAwAefvhhAMChQ4daTVtfX49jx45BpVK16fLVHczMzFrt2I8ZMwY7d+4E8OPRqIyMDACAUqlEaGioNBra3XV2xNy5cwH81IWtRUlJCTIzM7v6Ee6rs8vV3t4e+fn5raYtKirCjRs32n3/+y0/IqKuYNAhIqJ+wdLSEps3b0ZiYiJqampw9uxZrFy5EsbGxoiKipKme+ONN+Dq6or169cjJiYGVVVVyMrKwmOPPYbCwkJERUVJXa2604QJE5CVlYXc3FwkJiYiJycHAQEB0vPPPvssLl68iPr6ety6dQtvvvkmhBAIDg7u9Lxef/11WFtbY/369YiNjUV1dTXS09OxcuXKdruzdYfOLtc5c+agoKAAf//731FdXY3s7GysW7funl3rfm75ERF1mszDvhEREbXr7uGlHR0dRXp6uggLCxMajUaoVCoxa9YsER8f3+a1JSUlYv369cLV1VUolUphaWkpwsLCxLFjx6Rp9u7dKwC0uq1YsUIkJia2aX/55ZeFEKJN+7x586T3y8jIEAEBAUKtVgtnZ2exY8cO6bkLFy6IZ555RowdO1aYmZkJa2trMXXqVLFr1y7R3NzcpeWTmZkpFi5cKCwsLKQhr2NiYkRISIhU39NPP93u5wQgEhMTOz3PjizXFuXl5WLNmjXC3t5eqFQq4e/vL5KSkoSfn59Uw4svvtih5UdE1AWHFEK00+GZiIhIZsHBwXB3d8d7770HX19flJSUIC8vT+6yiIiofzjMrmtERERERKR3GHSIiIiIiEjvMOgQEVGfdeHCBSgUCqSkpCA/Px8KhQKvvPKK3GX1CIVC8bO3LVu29Pt5EhH1FiO5CyAiIroXX19fnDp1Su4yeoUcp8zyNF0i0mc8okNERERERHqHQYeIiIiIiPQOgw4REREREekdBh0iIiIiItI7DDpERERERKR3GHSIiIiIiEjvMOgQEREREZHeYdAhIiIiIiK9w6BDRERERER6x0juAoiIiI4cOYKUlJRWbTdu3EBdXR22bdvWqj04OBiTJk3qzfKIiKgfYtAhIiLZ3b59G5s2bYJSqYSBwU+dDfLy8nD+/HkAgE6nQ1NTE5KTk+Uqk4iI+hGFEELIXQQREQ1stbW1sLGxgVarve90bm5uyM7O7qWqiIioHzvMc3SIiEh2ZmZmWLBgAZRK5T2nMTY2xurVq3uvKCIi6tcYdIiIqE9YsWIFGhsb7/l8Q0MDli1b1osVERFRf8aua0RE1Cc0NjbC1tYWlZWVbZ5TKBTw8fGRztchIiL6Gey6RkREfYNSqcSjjz4KY2PjNs8ZGhriiSeekKEqIiLqrxh0iIioz1i+fDkaGhratOt0OixZskSGioiIqL9i0CEioj5j5syZsLOza9VmYGAAf39/ODo6ylQVERH1Rww6RETUZxgYGGDlypWtuq8pFAqsWrVKxqqIiKg/4mAERETUpyQnJ2PixInSYyMjI9y8eRPW1tYyVkVERP0MByMgIqK+xc/PDyNGjADwY8gJDw9nyCEiok5j0CEioj5n5cqVMDIygk6nw4oVK+Quh4iI+iF2XSMioj7nypUrGDVqFExNTVFSUgK1Wi13SURE1L8cNpK7AiIiorvZ2dnBzc0Nbm5uUCqVcpdDRET9ELuuERFRn3Lq1Cm4uLggJycHcXFxGDt2LK5fvy53WURE1M+w6xoREfUpw4cPR15eHpqbmwEASqUSoaGhOHTokMyVERFRP3KYQYeIiPqMmzdvYujQoW3aLSwsUFFRIUNFRETUT3F4aSIi6huamppQVlYGI6O2p49aWVkhMzMT9fX1MlRGRET9EQcjICKiXlVQUID09HTk5OS0uqWnp6Ourg4TJkxASkoKdDodFAoFAMDS0hLu7u4AgEGDBkkDFbTcPDw84OXlBT8+uT8AACAASURBVCsrKzk/GhER9SHsukZERN1KCIHc3FxcvnwZV65cweXLl3H58mVkZWUhJycHDQ0NAABra2uMGjUKo0aNwujRozFq1CiMHDkSbm5u2LNnD/7yl79ArVbjtddeQ0REBAoKCqRQlJaWJoWlGzduoKmpCUD7IajlNnz4cBgaGsq5aIiIqPfwHB0iIuqauro6ZGRkICMjA+np6cjIyEBmZiYuX74MrVYL4McjMSNHjmwTaEaNGgVra+v7vn9wcDDc3d3x3nvv3Xe6xsZGXLt2DdnZ2cjJyUF2dnarW11dHQDA1NQUo0aNwpgxYzBmzBiMHTtWuq/RaLpnoRARUV/BoENERPdXXl6OjIwMpKWltQo1165dQ3NzM5RKJUaOHCkFhzsDzZAhQ7o8344GnZ9TUFAghZ6srCxkZmYiIyMDV65ckY4uOTo6wt3dHWPGjIG7uzvc3d0xevRoDBs2TOo+R0RE/QovGEpERD+qrKxEamoqLl26hEuXLkmhprCwEABgZmYmhYCnn34aY8aMgYeHB0aOHNmnL+rp4OAABwcHBAQEtGpvamrCtWvXpKNSmZmZuHTpEj7//HOUlJQA+Okzt5wD5OXlBU9PT7i4uMjwSYiIqDN4RIeIaIBpbGyUdupbbqmpqbh27RqAH7ubeXp6wsPDA+7u7vD09MSYMWPg4uLSq0c3uuuITleUlZW1CUBpaWm4ceMGgB+Hu/bw8IC3tzc8PT2lEGRnZ9frtRIRUbt4RIeISJ+1jHCWlpaG5ORkpKenS6ObGRkZYdiwYfDw8MATTzwhhZuxY8fCwGBgX33A2toa06dPx/Tp01u1V1RUIC0tDampqUhNTUVaWhr27duH4uJiAICtrW2b8OPp6cnR4IiIZMAjOkREeqCxsRFpaWk4f/48zp07hwsXLuDSpUvSRTaHDRsGLy8veHt7Y9y4cfDy8oK7uzuMjY1lrvze5Dyi01m3b9+WRoJr+ffChQtSFzh7e3v4+flJN09PT7i5uclcNRGRXuNgBERE/U1tbS0uXrwohZrz58/j0qVLaGhogEqlwrhx4zB+/Hgp0Hh7e/fLIwr9Kejcy/Xr13Hp0iVcuHAB58+fx/nz53H16lUAgJ2dHcaPHy/dJkyYADc3Nw5+QETUPRh0iIj6sqqqKqSkpCA5OVnqetYSajQaDcaNGycdIfDw8MCkSZNgYmIid9ndQh+CTnsqKytx8eLFAblOiYh6EYMOEVFfUV5ejjNnzkhHac6dO4ecnBwIITBkyBDpV/+B8uu/vgad9tTW1uLSpUvSUZ9z584hNTUVWq0Wpqam8Pb2hp+fH6ZMmYIpU6bA3d1dr9c9EVE34GAERERy0Ol0yMjIQHJyMhISEhAfH4+MjAw0NzdL53OsXLlS+lXf09NT7pKpB5mZmUkhpkVTUxPS09Ol8HP27Fl89NFHqKurg5WVFaZMmYKpU6dKr/u5C7ASEQ00PKJDRNQLCgoKpK5KCQkJOHXqFGpra2Fubg4fHx/4+fnB398fM2fO5BDF/2cgHdHpqKamJmRmZrYKyD/88AOEELC3t4e/vz9mzJgBPz8/dnkjooGOXdeIiLpbTU0Nzp8/LwWb+Ph4XL16FYaGhhgzZow08pa/vz/Gjx8/4IdyvhcGnY6pqKhAUlIS4uPjkZycjMTERJSWlkKpVGLcuHFS8AkICICrq6vc5RIR9RYGHSKiB5WZmYnExEScOXMGp0+fRmpqKpqammBvby91L5o6dSr8/Pxgbm4ud7n9BoNO1zQ3N+OHH36QtsfTp08jPT0dOp0Ozs7OmDp1KmbMmIGZM2di3LhxMDQ0lLtkIqKewKBDRNQZLefWtHQbOnHiBHJzc9v8et4yahZ1HYNO96mqqsLZs2eRmJiI06dPIyEhAWVlZbCwsIC/vz8CAgIwc+ZMTJw4sU9fW4mIqBMYdIiI7qe2thZnzpzByZMnER8fj8TERFRXV8PGxgYzZsxAQEAA/P394efnB6VSKXe5eoVBp+c0NzcjLS0N3377LU6ePImTJ0+isLAQKpUKU6ZMwaxZszBr1ixMmzYNpqamcpdLRNQVDDpERHdqampCSkoK4uLiEBcXh5MnT6K+vr7Vid48t6Z3MOj0rsuXL+O7777Dd999h5MnT+Lq1atQqVSYPn06QkJCEBISAj8/P3Z1I6L+gkGHiAa2hoYGnDlzBt988w1OnDiB06dPQ6vVws3NDYGBgQgKCsKsWbPg7Owsd6kDDoOOvAoLCxEfH4+4uDh89dVXyM3Nhbm5OaZOnYrZs2dj9uzZmDBhAq/nQ0R9FYMOEQ0sQghcuHABsbGxiI2NlYZ5HjZsGIKCghAUFITAwEAMHz5c7lIHPAadviUtLQ3Hjh2TfhSoqKjA0KFDERYWhvDwcMyZM4fX8iGivoRBh4j0X0FBAWJjY3H06FHExcXh1q1bGDJkCEJDQ6Vw4+bmJneZdBcGnb5Lp9MhOTkZcXFxOHLkCBITEyGEwKRJkzB37lyEh4dj4sSJ7N5JRHJi0CEi/VNXV4dvv/1WCjepqakwNTWFv78/QkNDMWfOHPj4+LDLTR/HoNN/VFRUSKHnyJEjyMvLg62tLebMmYPw8HA89NBDsLGxkbtMIhpYGHSISD/cunULR44cQUxMDI4cOYKqqiq4ublJ5xKEh4dDo9HIXSZ1AoNO/5WTk4O4uDgcPHgQsbGxaGpqwtSpUxEZGYkFCxbA3d1d7hKJSP8x6BBR/6TT6fD9998jJiYGhw8fxoULF6BWqxEaGop58+bhoYcegoODg9xl0gNg0NEPtbW1OHbsGGJiYrBv3z7cunULbm5uiIiIwJIlSzBjxgweXSWinsCgQ0T9R21tLb766ivs378fX331FUpKSuDq6op58+YhIiICgYGBMDExkbtM6iYMOvqnqakJ3333Hfbv348DBw7g2rVrcHR0xPz587F48WLMmjWLw1cTUXdh0CGivu327duIiYnBl19+ia+//hoNDQ2YMWMGIiIiMG/ePHh4eMhdIvUQBh39l5KSgv3792Pfvn04f/487Ozs8Mgjj2Dp0qUICAjgYAZE9CAO8xuEiPqckpIS7N69G5GRkRg6dCiefPJJFBcX44033kBubi6+/fZb/Pa3v2XI6YBPP/0UCoUCCoXinle4/+yzz+Dr6wuVSiVNm5qa2suV0oPqj+vax8cHr776Ks6dO4dr167hpZdeQkpKCgIDA2FnZ4dVq1YhLi4Ozc3NstVIPaM/bq/U/zDoEFGfcOPGDURFRSE0NBT29vZ49tlnAQC7du1CaWkp4uPjsW7dOtjb2/d4LdXV1Rg1ahQiIiJ6fF497dFHH4UQAiEhIe0+n5CQgOXLl2POnDkoLi7GlStX4OTk1OH37+/Lqr/Xf6f+vq6HDx+OdevWIT4+Hjk5OXjllVeQlpaG0NDQVs8N5I4o3F77zvZK/YOR3AUQ0cCVkZGBL774Anv37sW5c+cwaNAgREREIDo6GmFhYVCpVLLUJYRAc3Nzt/yKbG5uDl9fX8THx3dDZd0vOjoaQgisW7cO5ubmMDc3R25ubodf353LSg5c131zXbu6umLdunVYt24dUlNT8dlnn+Hzzz/Hu+++i+HDh2Pp0qVYvnw5xo8f3+O19CXcXvvm9kp9F4MOEfWq3NxcfPnll4iOjkZCQgJsbW0xd+5cbNmyBWFhYTA2Npa7RGg0GmRnZ8tdRq9o2XHo6jVO+vuy6u/1d0Z/XddeXl7w8vLC1q1bceHCBXz++ef47LPP8NZbb8HLywurVq3CihUrBsQoi9xeO24gLSu6N3ZdI6IeV1paip07d8Lf3x/Dhw/H73//e7i5ueHAgQMoLCyUzsfpCyFnoNHpdHKXQL1EH9a1r68vXn/9dWRnZ+Ps2bMIDg7Gm2++CWdnZ/j7+2Pnzp2orq6Wu0zqBvqwvZL8GHSIqEfcvn271YAC/+///T84ODhg//79KCoqkp4zMur8geW3335bOjHVyckJSUlJCAkJgUajgZmZGYKCgpCQkNDmdaWlpdiwYQNGjBgBY2NjDBo0CHPnzsXx48elafbt2ye9t0KhgFarbbf92rVrWLZsGaysrGBjY4OIiIhWvx621FhTU4OEhATpdXd+3vr6erz66qtwd3eHmZkZrK2tERkZiQMHDnT5j3xGRgYWLlwIS0tLqNVqBAQEtNs1peXz7N+/HwCkk32nTp3a4Xl117K6nwsXLnBd34O+revO8vPzQ1RUFPLy8rBv3z44ODjg+eefx5AhQ7B06VIcPHgQTU1NPTLve+F3070N9O2VZCKIiLpJbW2t+Pzzz0VERIQwNjYWpqamIiIiQnz00Ueiurq62+fn4+Mj1Gq1mDZtmjh16pSorq4WSUlJYty4ccLY2FicOHFCmrawsFC4uroKOzs7cfDgQVFRUSEyMzPFokWLhEKhELt27Wr13gsWLBAARF1dXbvtCxYskOYZGxsrVCqVmDRpUpsa1Wq1mDFjRrv1r1mzRlhaWoqjR4+K2tpaUVRUJDZu3CgAiOPHj3d6eVy+fFlYWVkJR0dHcfToUVFVVSUuXrwo5syZI1xcXISJiUmb19zrc3ZGdy2ruwUFBYlf/vKXQgiu67vp27ruLmVlZeL9998XM2bMEACEo6OjeOGFF8T58+d7rQYhuL3ejdsryeQQgw4RPZCGhgaxf/9+sXjxYqFSqYSxsbGYN2+e+O9//ysqKyt7dN4+Pj4CQJudmIsXLwoAwsfHR2pbvXq1ACD27NnTalqtViscHByESqUSRUVFUvvP/YE8ePBgq/bFixcLAKK4uLhV+/12JlxdXcX06dPbtI8ePbpLOxNLliwRAMQXX3zRqj0/P1+YmJjItjPR0WV1t7uDDtf1T/RtXfeE9PR08dJLLwlnZ2cBQEyaNEn885//FBUVFT0+b26vrXF7JZkcYtc1IuqSpKQkvPDCC3BwcMDDDz+MkpISvPvuuygsLERMTAxWrlwJjUbT43Wo1Wr4+vq2avP29oaDgwNSUlJQWFgIANi7dy8AYN68ea2mNTExQUhICOrq6vD11193eL6TJk1q9djZ2RkAUFBQ0OH3CA8Px6lTp7B27VqcPn1a6hKSmZmJwMDADr9PiyNHjgAAwsLCWrU7ODhg9OjRnX6/7tIdywrgur6Tvq/r7jB27Fi8/vrruHbtGo4dO4YxY8Zg/fr1cHBwwJNPPtluF7LuxO31J9xeSS4MOkTUYfn5+YiKioKvry8mT56Mo0eP4rnnnkNWVhaOHz+ONWvWwNrauldrsrKyard9yJAhAIBbt26hvr4eFRUVMDU1bTd82dnZAQCKioo6PF9LS8tWj1sGUujMUKY7duzA7t27kZOTg5CQEFhYWCA8PFza8emM+vp6VFVVwdTUFObm5m2eb1kecuiOZQVwXbcYCOu6OxkYGCA4OBj//e9/UVRUhO3bt+PixYvw9/eHu7s7tm3bhlu3bnX7fLm9/ojbK8mJQYeI7quurg7R0dGIjIyURkybMmUKTp48iR9++AFbtmzBiBEjZKuvtLS03QsItuy4DBkyBCYmJrC0tIRWq0VVVVWbaW/evAkAGDp0aLfXp1Ao7vvc448/jri4OJSXl2Pfvn0QQmDRokXYvn17p+ZjYmICjUYDrVbb7qhTZWVlna69r+G6/tFAWNc9xdLSEmvXrkVycjJSU1OxcOFCvPXWW3B2dkZkZCSio6O7bQADbq8/4vZKcmLQIaI2mpubER8fj2eeeQZDhgzB448/DgDYs2cPioqK8P7778Pf3/++fyh7i1arRVJSUqu2S5cuoaCgAD4+PrC3twcAPPzwwwCAQ4cOtZq2vr4ex44dg0qlatOtojuYmZmhoaFBejxmzBjs3LkTwI+/+GZkZAAAlEolQkNDpVGB7q6zI+bOnQvgp24iLUpKSpCZmdnVj9BncF3/RN/XdW/w9PTEn//8Z+Tl5eHjjz+GVqvFsmXL4OLigk2bNuHq1asP9P7cXn/C7ZXkwqBDRJKMjAz87ne/g5OTE2bOnInU1FS89dZbKCwsxMGDB7FkyZI+d60bS0tLbN68GYmJiaipqcHZs2excuVKGBsbIyoqSprujTfegKurK9avX4+YmBhUVVUhKysLjz32GAoLCxEVFSV1E+lOEyZMQFZWFnJzc5GYmIicnBwEBARIzz/77LO4ePEi6uvrcevWLbz55psQQiA4OLjT83r99ddhbW2N9evXIzY2FtXV1UhPT8fKlSvb7TLS33Bd/0Tf13VvMjU1xZIlSxAbG4uMjAysXLkSH374IUaOHInQ0FBER0d3aUhlbq8/4fZKspFtHAQi6hOqqqrEv//9b2k41mHDholXX31VXL58We7SfpaPj49wdHQU6enpIiwsTGg0GqFSqcSsWbNEfHx8m+lLSkrE+vXrhaurq1AqlcLS0lKEhYWJY8eOSdPs3btXAGh1W7FihUhMTGzT/vLLLwshRJv2efPmSe+XkZEhAgIChFqtFs7OzmLHjh3ScxcuXBDPPPOMGDt2rDAzMxPW1tZi6tSpYteuXaK5ublLyyQzM1MsXLhQWFhYSEOlxsTEiJCQEKm+p59+ut3PCUAkJiZ2eF7dvazudveoa1zXrenTuu5rGhoaRHR0tAgODhYKhUK4ubmJbdu2dXg0Lm6vbXF7JRkcUgjRTgdSItJ7ycnJ2LlzJ/bs2YOGhgaEhoZi1apVePjhh7t0EU85+Pr6oqSkBHl5eXKXQj0gODgY7u7ueO+997iuSTaXL1/Gv//9b/zrX/9CVVUVFixYgLVr12L27Nn3fA23V6I+4TC7rhENIEVFRYiKioKPjw8mTpyI+Ph4vPzyy8jNzZW6pvWXkENE1BtGjRrV6lye/Px8hIaGwsPDA1FRUe2eYE9EfQODDpGe0+l0iIuLw9KlSzFs2DC89tprmDp1Kk6ePIm0tDS8+OKLGDx4sNxlEhH1aS3n8iQkJODs2bMICAjA5s2b4ejoiGeeeQYXL16Uu0QiuguDDpGeys7OxqZNm+Dk5ISwsDDcvn0bH374YatR0/qrt99+GwqFAikpKcjPz4dCocArr7wid1k9QqFQ/Oxty5Yt/X6e93LhwgWu6wGyrvsTPz8/vP/++ygoKMBbb72F+Ph4+Pj4wNXVldsrt1fqQ3iODpEeaWhowP79+7Fz504cO3YMjo6OeOqpp/Dkk0/CxcVF7vKIOuXOc3SI+rLm5mbExsbi3XffxZEjRzB8+HA899xzePrpp+954VAi6nE8R4dIH+Tl5WHbtm0YMWIEHn30UQDAZ599hqtXr+L3v/89Qw4RUQ8yMDBAWFgYDh06hKysLCxduhR/+tOfYG9vj1WrViE1NVXuEokGJAYdon7qznNvXFxcEBUVhRUrViA7OxuxsbEcWICISAYjRozAn//8Z1y/fh1RUVFITk6Gt7c3/P39u3xNHiLqGgYdon6m5eiNq6urdO7Nnj17cOPGDfz5z3/m0Rsioj5Ao9Fg7dq1uHTpEmJjYzFo0CAsW7YMY8aMwbZt23D79m25SyTSeww6RP1AU1MT/ve//2HOnDkYPnw4/va3v+HJJ5/EtWvXePSGiKgPMzAwwOzZs3Hw4EGkp6cjLCwMf/zjHzF8+HCsX78eV69elbtEIr3FoEPUhxUWFuIPf/gDXFxcsHTpUhgbG2Pv3r24fv06fv/738PZ2VnuEomIqIPc3d2xY8cO5Obm4rXXXsO+ffswatQoLF26FKdPn5a7PCK9w6BD1AclJydj1apVGD58ON555x088sgjuHLlCmJiYjB//nwYGhrKXSIREXWRlZUVfvOb3yAnJwd79+5FXl4epk2bhokTJ2L37t1oamqSu0QivcCgQ9RHVFVVYefOnfDx8cHEiRORnp6Ov//97ygoKEBUVBRcXV3lLpGIiLqRgYEBIiMjcerUKZw9exYeHh546qmnMHr0aGzbtg0VFRVyl0jUrzHoEMksMzMTmzZtwvDhw7Fu3Tr4+Pjg3LlzOHv2LNauXQuVSiV3iURE1MP8/Pywe/duZGVlITIyElu3bsWwYcOwbt065Obmyl0eUb/EoEMkg8bGRnz66aeYNWsW3N3dsW/fPrz66qsoLCzE7t27MX78eLlLJCIiGbi5uSEqKgrXr1/Hiy++iOjoaIwcOZLX4yHqAoUQQshdBNFAUVxcjA8++AA7duxAfn4+goOD8cILLyAiIgIKhULu8ohkc/XqVZSVlbVqe/bZZ+Hi4oJNmza1andwcIC9vX1vlkckm/r6euzZswd/+ctfkJaWhoiICLz44ouYMWOG3KUR9XWHGXSIekFmZibee+89/Otf/4JSqcQTTzyBDRs2YPjw4XKXRtQnvPPOO9iwYUOHpj18+DDmzp3bwxUR9S1CCMTExGDbtm1ISEjAjBkz8OKLL/KHMqJ7Y9Ah6inNzc345ptvEBUVhUOHDmHUqFH41a9+hTVr1kCtVstdHlGfUlBQAGdnZzQ3N993OisrKxQXF/O6UTSgxcfHY9u2bTh06BC8vLywceNGPPbYY/x/QdTaYZ6jQ9TNKisrsXPnTnh4eCAsLAxarRb79+9HRkYG1q1bx5BD1A4HBwf4+/vfd+h0pVKJFStWcGeOBjx/f38cPHgQKSkp8PX1xdNPP41Ro0YhKioKtbW1cpdH1Gcw6BB1kytXrkijp23cuBGzZs1CamoqYmNjERkZya4FRD/j8ccfv+/zjY2NWL58eS9VQ9T3eXt7Y/fu3bh8+TLmz5+Pl156CS4uLtiyZQtu374td3lEsmPQIbrLyZMnOzV9fHw8li5dCnd3d0RHR2PTpk24fv063n//fYwdO7aHqiTSP4sXL4aBwb3/LNnb22P69Om9WBFR/+Di4iKN1ParX/0K7777rnTJgvz8/J99fXNzMzZs2ACtVtsL1RL1HgYdojv84x//QGBgIJKTk+87nVarxe7du+Hl5YWAgAAUFBRgz549yMrKwosvvohBgwb1UsVE+sPKygrh4eHtdk1rGcSDR0aJ7m3w4MHYsmULrl+/jq1bt+J///sf3NzcsGrVKmRmZt7zdXv37sU777yDBQsWoL6+vhcrJupZDDpE/+ett97Cc889J91vT0FBAbZs2QJHR0esXbsWEyZMwMWLFxEfH48lS5bc9/wCIvp5K1asgE6na9PObmtEHafRaLBu3Trk5ORg165d+P777+Hh4YHIyEgkJSW1mlYIgddeew0GBgb45ptvsHDhQjQ0NMhUOVH34qhrRAC2bdvW6lodhoaGyMnJwbBhwwAAycnJiIqKwp49ezB48GCsXbsWv/71r2FraytXyUR6qba2Fra2tqirq2vVPnLkSFy+fFmmqoj6t+bmZhw6dAhbt25FUlKSNDR1ZGQk9u/fj4ULF0rTGhoaIiQkBAcOHICJiYmMVRM9MI66RgObEAK/+c1v8NJLL7VqNzAwwDvvvIPo6GhMnToVEydORHp6Ov7973/j+vXr2LJlC0MOUQ8wMzPDokWLoFQqpTalUonVq1fLVxRRP2dgYIDIyEicOXMGhw8fhqGhIebPn4/p06fjd7/7XaveCDqdDt988w2WLl2KxsZGGasmenA8okMDVnNzM9auXYsPPvgA7f03UCqVUCgUWLp0KdatW4eJEyfKUCXRwHP48GHMmzevVdvly5cxcuRImSoi0j+nTp3Chg0bcObMmXafNzIyQkREBKKjozmkO/VXPKJDA5NOp8Pq1avxn//8p92QA/x4tGfTpk3473//y5BD1IvmzJkjDeihUCjg5+fHkEPUzVpGMLxXiGlqasLBgwexdOlSNDU19WZpRN2GQYcGnIaGBixevBiffPLJfa/C3tTUhPfff5+H7ol6mZGREZYtWwalUglDQ8Ofvb4OEXXe0aNHcebMmfuGGJ1OhwMHDmD58uUMO9QvMejQgFJbW4uHHnoIMTEx7Y7sdLfi4mJER0f3QmVEdKfly5ejsbEROp0OS5YskbscIr2zZcuWDnVJ0+l02Lt3L5588sn7/jhI1BfxHB09UVFRgebmZlRXV6OxsRFNTU2oqqoCgPu2tSgvL79nF66OPK9SqWBqatrh5zUaDYyMjKBUKmFubv6zbWZmZg88+ktFRQXCwsKQnJzc4V+mFAoFvL29kZKS8kDzJtI3Op0OlZWVrb5XWq7EXlVVhaamJtTV1UGr1aKhoQE1NTXSa+/3fVJZWQmdTgchBHbs2AEbGxtpWGljY2Oo1ep2X2doaAgLCwvpsYWFBQwNDaXvjpbXGhgYwNLSEsCP1+1RKBS87hUNOCdOnEBQUBCMjIxgaGiIxsbGnw0xhoaGWLlyJT744IP7Xtj3foQQ0v//8vJyAG2/L+78Trnzu6Ll+fbc+Zr23G8f4s59DgCwtLSEgYFBm+8OhUIBKysrAD/tm7T8S33WYa4dmTQ1NaG8vBy3b99GeXl5q/u3b99GdXU16urqUFVVhaqqKtTV1aG6uhqVlZWoq6tDTU1Nq/uddfd/+p8LEmq1GsbGxvd8viVodfT5nwtO7WnZQVGr1VCpVLCwsIC5uTlUKhU0Gg00Gg1UKhXMzc1hYWEBtVqNQYMGwcrKCgYGBvjNb36DrKws6f2USiUMDAwghEBjY2OregwNDWFlZQUbGxsMHjwYN27ckIaaJurvtFotysrKpFtpaal0v6KiAjU1NaiurkZFRQWqqqpQXV0tff9UVlaiurq6U1dQb9khaHG/75M7fxQxNzeHgYEB4uLiAPx4RPZeFzO8eyeos98xarUa5ubm0vdGy31zc3NYWVlBo9FArVbD0tIS1tbW0s3Gxka6f+dIcUR92ahRo3Dw4EHcuHFDuuXk5ODq1asoLi6W/u8YGhpCqVRCp9OhsbERH330ESoqKvD888/j9u3b0vdGZWUlampqUFNTI31v3P09UlNTg9ra2k7V2fKDBdD2e+RuLT9ctOd++yh3f6+0/GDTUaamptJ3Q8v3hFqthpWVlfQ90vK9YmFh0Re1tAAAIABJREFU0eZ7w9rautWPNNS9eESnG9TV1aG4uBg3b95EcXExiouLUVJSIj0uKytrE2ra++Wh5deCQYMGQaPRwNTUtM0O/P3u33nk485fHtpr6yvq6+ulL76WHZP22u4Mfve6X1VVBa1WK92vrq7G7du321yPA/hxWZuYmMDMzEzakbG1tcXQoUPh6OgIFxcXDBkyBEOGDIGtrS0GDx4MW1tbXpWd+qSGhgbcunULhYWFuHnzJm7evImCggLcunULN2/eRGlpaasw096PIy1/gFt+TDA3N2/1h/tej+88QtLyuCXItPwf66rU1FQ4OTk90PdWy9HrliDU2NiI6urqNr8st+yI1dTU3PdxRUXFzy5DGxsb6TZkyBDY2dnBwcEBgwcPhqOjo/TdwgsMk5wqKipQWFiI4uJi6bvj1v9n787joqr3/4G/hp1hGRZZhh0UFBAQUVHBEMEtNJRSKzXrlqXVz9Lyat/u7XbTNtO6V/Nm2r23xRbTlETRFLcEDEiRbWQLWWTfGVZZ3r8/fMy5jAPK4Mwcls/z8ZiHcuZwzvuc+cybz/ssn1NVhVu3buHWrVuoqqpCbW0tmpqa0Nra2ufl3mZmZlxHXdah76vDL/u/7O+trD8iEAgU8kXvnMInWe5ob29HW1sbdxYb+F/hJDswJDv4fHfB19zczP1cX1+PpqYm1NbWKhyE0dHRkSt8ZHnE1tYWtra2sLKygp2dHZdP2OMtBiyWFTr3IPvyl5SUoLS0FGVlZSgpKUFVVZVcYXP3HzxDQ0OMGTMGNjY2sLa2hrm5OXdmob9/ZS9G9WpqatDS0oK2trZ+z6A1NDSgrq4ONTU1XKFaXV0ttxxtbW25okeWgBwdHSEWi+Ho6Ah7e3vY2dmxh6wxKtPS0oKioiIUFRXJHX0tLy9HRUUFKisrUVNTI/c7xsbGch1qKyurPs9AsLMRg9fR0SFXPPb+f01NDfdvVVUVKioqUF5eLnfQRUtLi/t87OzsYGtrC2dnZzg7O8PJyYl7sVzCKKurqwtlZWUoLi7m8oasH1NVVcUdBOl9BlRLSwtWVlawtraGWCyWyxl9vbq6uuDi4vJABzJGs/r6ermc0dertraWK0Crq6vlbjfQ1dWFtbU11w+R9UFcXFzg6OgIJycnODg4sPwxmgud5uZm3Lx5k3vdunWLK2TKyspQWloqlwRMTU3h4OAABwcH2NjYcAmh9xF/2c+9r/Vkhq/u7m65oqeiokKuEJIloOLiYlRWVsrd9yPrvDg4OHDFj4uLC1xdXeHq6go7O7tBX+PMjCy3b9/GzZs3kZubi/z8fIWipncRIxKJ4OTkBGdnZ4jFYojFYq6tyTootra2rPMxREmlUq6TWVZWJnf2rby8HMXFxSgsLJQriMRisVzx4+LiAnd3d7i7u8PJyYmdFRqFenp6UFxcjPz8fOTl5aGoqAglJSVc3igrK+POvujq6sLBwQGOjo5wdHSU6xzLzjDK+i+sLQ1tVVVV3Fl62Zk4WR6R9V+Li4u5vqtAIICtrS2cnJy44sfZ2Rnjxo3DuHHj4OrqOhoOcI3cQqerqwvFxcVcISO79lT2qqqq4uYVi8VwcHCAWCyGk5MT7OzsYG9vLzetvxtgGQa4UxRVVlbi1q1bXIelvLycuwSgvLwchYWFXALS19eHs7Mz3NzcuOLH1dWV+5ndHD2y9PT0oKioCHl5ecjLy0Nubi5yc3O5ToqsSBaLxXB1dZU7ot/7KP9QuJyDUb/q6mq5s3eFhYXc/2/evIna2loAd/KIm5sbxo8fzxU/7u7u8PDwgJ2dHc9bwTyI3sWMrKDJz89Hbm4ubt68yd1TYm5uzh3Fl/0re7m4uMDW1pYdVBtlKisruaKndwFcUlKCwsJCrv+ro6MDZ2dnuLu7Y9y4cVz+kBVBI2SQheFf6Ny+fRt5eXmQSCQoKChAVlYWJBIJJBIJd1TMwMAAdnZ2cHNzU3h5eHjc8+Y2hlGl+vp6FBQU9PkqKirijsKZm5vDzc0NXl5e8Pb25v51cXFhf7SGuIaGBmRmZkIikSArKwtXr17F9evXuUtcZZ+t7CX7bN3d3dkNqcyA9JVHsrKykJmZicbGRgB3rkJwd3eHl5cXAgICEBAQAD8/P/b3bgiqr6/n+i6ynJGWlobm5mYAd/owbm5u8Pb27rMfwzDKaG9vxx9//MH1m3u/bt68CSKCrq4u3N3d5fofXl5e8PLyGm73Kg+fQqezsxM3btxAamoqMjIykJWVhZycHBQWFnIfyrhx4+Dl5YXx48fDy8sL7u7ucHV1hZWVFd/hM8x93b59G4WFhSgoKMCNGzeQnZ2N7OxsSCQS7vIlExMTjB8/Hp6envDy8oK/vz/8/f1hbW3Nc/SjU0lJCZKSkpCSkoL09HRkZGSgtLQUADBmzBj4+fnBx8cHPj4+mDhxItzd3dnZOkatKisrkZOTg6ysLKSnpyM9PR2ZmZloamqCQCCAq6sr/Pz84Ovri6lTp2LatGnsb6SGEBFyc3ORnJyMa9euITMzE+np6dwR9jFjxsDX1xcTJ07ExIkTuQMg7PNhNKWxsRF5eXm4ceMG1z4zMzNx69YtAHcGn5C1z8mTJ2PatGnw9vYeymd/hmah09LSgvT0dKSmpuL69etcQujo6ICBgQEmTpwIT09PeHp6YsKECfDy8oKbm9touNaQGaVqa2shkUjkip+srCyUlJQAAOzt7bmiR/ZycXHhN+gRRiqV4vfff0dSUhL3Ki8vh7a2Nry9vbmiRvavWCzmO2SGAXCng11YWMgV4+np6UhLS0NeXh6ICGPHjkVgYCCmTZuGwMBA+Pv7s5uYVaC8vBwpKSlITk5GcnIyUlJS0NDQAD09Pfj6+nIHQGQHQ2xtbfkOmWH6VF9fj4yMDGRmZiIjIwMZGRncWUehUMgVPVOnTkVgYCBcXV35DllmaBQ6ubm5SExMxOXLl3HlyhXk5uaiu7sbIpGI67RNmjQJ/v7+8PT0HMqVI8NoVE1NDVJTU+VeeXl56Onpgbm5OaZMmYKgoCAEBwdj+vTp7F4zJTQ2NuLixYs4d+4cLl68CIlEgu7ubjg4OGDatGmYPn06AgMDERAQwPYrMyzV19dzRXtycjKSkpJQW1sLPT09TJ48GaGhoQgLC8PMmTNhaGjId7hDXkFBAc6fP4/z588jPj4eJSUlEAgEGD9+PHf2bOrUqZg0aRIrJJlhr7u7GxKJhCvkk5OTkZmZia6uLlhZWWHmzJkIDQ3FnDlzMHHiRL4uedN8odPV1YXU1FQkJCTg8uXLSEhIQGVlJQwNDTF16lQEBwdj8uTJ8Pf3Z9eeMswgNDc3Iy0tDampqUhOTsbly5dRWFgIHR0d+Pv7IygoCLNmzUJQUBBsbGz4DnfIaG9vR2JiIs6dO4dz587h999/BxFh0qRJCA0NxcyZMxEYGAh7e3u+Q2UYtcnLy0NSUhL3XcjNzYWBgQGCgoIQFhaGsLAwBAQEsBG6AJSVleHcuXO4cOECzp8/j6KiIgiFQgQHByMkJASBgYGYMmUKG0SEGTXa2tpw7do1pKSk4NKlS7h06RLq6+thbW2N2bNnY86cOQgNDYWHh4emQtJMoVNUVIRTp07h1KlTOH/+PJqbmzFmzBjMnDmT63AFBAT0+6RshmEeTGlpKeLj47kDDBkZGeju7oaXlxcWLlyIhQsXYtasWaPuO1hfX48TJ07g6NGj+OWXX9DW1oZx48ZxHbrQ0FD2YDZmVCspKeGK/3PnzqG8vBzm5uZYvHgxoqKiMG/evFF1tufatWs4duwYoqOjkZmZCT09PUyfPh1z5szBnDlzEBgYOOryKMP0p6enB6mpqdzBgMuXL6O5uRkuLi6IjIzEkiVLMGvWLHUeOFFPodPZ2Yn4+HicOnUKsbGxyMrKgrGxMcLCwrBgwQKEhIRgwoQJw23kBoYZMZqampCYmIi4uDicOnUKEokEJiYmCA8P5wofBwcHvsNUi6qqKkRHR+Po0aM4f/48BAIBwsLCsHTpUsybNw/Ozs58h8gwQ5ZEIsHp06dx9OhRXLlyBUKhEAsXLkRUVBQiIiJG3Khu3d3duHz5MqKjoxEdHY2ioiI4OTlhyZIlWLRoEYKCgthzqxhmgLq6upCUlIRTp07h2LFjkEgkGDNmDB555BEsWbIEc+fOhYGBgSpXqbpCh4hw+fJlfP311zhy5AgaGxvh6ekpd7SYXZPKMENTYWGh3FnXlpYWBAYGYuXKlXj88ceH/ag/PT09iI2Nxb59+3D69Gno6elhwYIFiIqKwqJFi2BmZsZ3iAwz7JSXlyM6Oho//fQTLl26BB0dHSxbtgzr1q3DzJkz+Q7vgfzxxx84cOAAvvzyS1RWVsLb2xtLlizB0qVLMXnyZHaglmFUIDc3lztDmpycDCMjIzzxxBN4/vnnERAQoIpVPHihk52djYMHD+LgwYMoKirC5MmTsXr1akRGRg6lURcYhhmg9vZ2XLp0Cd9//z2OHj2K9vZ2LFiwAKtWrcIjjzyi6qMtalVRUYH//Oc/2L9/P4qLizFnzhysXbsWixcvZkdhGUaFamtrceTIEXz++edITU2Fr68v1q1bh5UrVw6b50Pdvn0bP//8M/bv349z587B3t4ezz77LJ588klN3lPAMKNSWVkZfvzxRxw4cAASiQQBAQF4/vnn8cQTTzzImeJY0CB0dnbSDz/8QDNmzCAA5ODgQFu2bKHMzMzBLI5hmCGqpaWFDh48SAsWLCBtbW0SiUT06quvUkFBAd+h3VNOTg499dRTpKurSxYWFrRp0ybKycnhOyyGGRV+++03euaZZ8jQ0JCMjY1p69atVF9fz3dY/WpsbKT33nuPbGxsSFtbmxYtWkTHjx+nrq4uvkNjmFHp8uXLtHr1ajIwMCATExPatGkTlZWVDWZRJ5UqdDo6Ouhf//oXOTk5kba2Nj366KMUFxdH3d3dg1m5Wn3//fcEgACQvr4+3+GMCB999BG3T+3t7fkOZ0gbifuqvLycduzYwX3/V6xYQVlZWXyHJaesrIyefvpp0tbWpvHjx9N///tfamtr4zssDstLqjcSv2sDMZC29MMPP5Cfnx8ZGBhw82ZkZGgsxrq6OtqxYwdZWlqShYUF7dixg1pbWzW2/vtpb2+nDz74gMzNzcnU1JTeeOMNKi4u5jssDssXqjda88VwVVtbSzt37iQ7OzsyMDCgTZs2UV1dnTKLGHih88MPP5CLiwvp6+vT//t//2/IH9GVCQsLU0gQUqmUxo0bRxERETxFNbz5+fmxBDFAI3Ffyc7o+vj4kLa2Nq1Zs4bKy8t5jam7u5s+/vhjMjExIWdnZzp48OCQPhrL8pLqjcTv2kD01ZaIiOLj40kgENDmzZtJKpVSfn4+OTg4aLTQkWloaKA333yTjIyMyNHRkQ4fPqzxGO4WGxtLrq6uZGRkRG+99daQPuPE8oXqjdZ8MVy1tbXRnj17yNramiwtLemLL76gnp6egfzqSa37XdxWUlKC+fPn44knnkBoaChyc3Oxe/fuYX3/DRGhp6cHPT09g16GsbExgoODVRgVwwwPOjo6WLFiBa5fv45vvvkGFy9ehKenJw4cOMBLPGVlZZgzZw62bt2K1157DTdu3MDKlSuH3XM+WF5iVOnw4cMgIrzyyiswNjbG2LFjUVJSgokTJ2o8FpFIhO3btyM/Px/z58/H8uXLsXr1arS0tGg8lra2NqxduxYRERGYPn06cnJy8Pe//33YDUjC8gUzmhgYGODll19Gbm4u1qxZgxdeeAEPP/wwqqur7/u7Ovd688yZM1i5ciWsra0RHx8/7EdRkTExMcEff/zBdxgMM6xpaWnhiSeewCOPPIK///3vWLduHS5cuIADBw7AyMhIIzFkZGQgIiICRkZGSEpKwqRJkzSyXnVgeYlRpZKSEgCApaUlz5H8j62tLQ4cOICoqCisWbMGISEhiImJgVgs1sj6KysrERkZiby8PBw5cgRRUVEaWa86sHzBjEYikQi7du3CY489hlWrViEwMBAxMTHw9vbu93f6PaNz5MgRLFq0CPPmzUNycvKIKXIYhlEtIyMj7NixA6dPn8bZs2fx8MMPo7m5We3rzc3NRVhYGMaOHYvExMRhXeQwjKp1d3fzHUK/Fi5ciN9++w3Nzc2YO3cu6urq1L7Ouro6zJ07F7W1tbhy5cqwLnIYZrSbMWMGkpKS4ODggDlz5iA3N7ffefssdFJSUvDkk09i3bp1OHjwoMaOzj6I7OxsLFmyBCKRCEZGRpg1axbi4+MV5ouOjoZAIOBe7e3t3HsdHR146623MGHCBAiFQlhYWGDx4sU4fvw490dj586dEAgEaGlpQUJCArccHZ3/nRzr6urCoUOHMHfuXNja2sLQ0BA+Pj745z//KXea+e5YCgsLsWLFCpiZmcHS0hKLFi3q84hNbW0tNm3ahLFjx0JfXx8ODg4IDw/Hl19+iba2Nrl5q6ursWHDBri4uEBPTw9WVlaIiorC9evXVbLPIyIiIBKJIBQKERoaioSEBABAQ0OD3LYJBAJs376d2z+9pz/22GMDXqey+2z79u3cvL1P0Z8+fZqbPmbMmH6XX1RUhBUrVsDExASWlpZYvXo16uvrUVhYiMWLF8PExARisRhr166FVCod1L6SGWi7Garmzp2LixcvIicnB6tXr1brujo6OrB06VKMHTsWJ06cgLm5uVrXN1gsL42OvKTMPlA2J/XeLmXa0s8//wwAMDQ0hEAgwPTp05XeHnVyc3NDXFwcpFIpnnnmGbWv76mnnkJjYyPOnz8/ZIeKZvmC5YsHzReyz1YgEMDBwQEpKSkICwuDiYmJxrdP3caMGYPY2Fi4ubkhMjJS7nsg5+67drq7u8nT05MWLFgw0Bt9eJeXl0dmZmZkb29PZ86cIalUSunp6TRv3jxuAIW7RUZGEgC5EZmee+45EolEdObMGWptbaWKigp6/fXXCQBduHBB7veNjIwoKCioz3hiYmIIAL333ntUV1dH1dXVtHv3btLS0qLXX3+931giIyMpMTGRmpub6ezZs2RoaEhTp06Vm7e8vJxcXV3J1taWYmJiqKmpiSoqKmjbtm0EgD755BNu3rKyMnJ2diYbGxs6efIkSaVSyszMpJCQEDIwMKDExERldjPHz8+PRCIRhYaGUnx8PEmlUkpJSSFfX1/S09OjixcvcvPOnz+ftLS0KD8/X2E5M2bMoG+//XZQMSizz4j6/7wCAgLI0tKy3+VHRUXR77//Ts3NzfT1118TAFq4cCFFRkZSamoqSaVS2rdvHwGgjRs3KixHmX2lbLsZqn799VfS1tam7777Tm3r+Oijj8jY2JiKiorUto4HxfLS6MpLyuwDIuVykqra0lB08eJF0tLSopMnT6ptHdHR0aSlpUXx8fFqW8eDYvmC5QtV5QvZ9hkZGdGMGTO4z0PT/TRNKS4uJlNTU9q+fXtfbyuOuhYbG0taWlrD6pkTy5YtIwB05MgRuemlpaWkr68/4ATh6upKM2fOVJjXw8ND6QQxe/ZshemrVq0iXV1damxs7DOWmJgYuemPPfYYAaDq6mpu2tNPP00A6NChQwrLX7BggdyXY82aNQRAoZGWl5eTvr4+BQQE9Bn//fj5+REAunLlitz09PR0AkB+fn7ctF9++YUA0Isvvig3b3x8PNnb29Pt27cHFYMy+4xo8IXO3X98vb29CQBdunRJbrqrqyuNHz9eYTnK7Ctl281QtnLlSgoMDFTb8j08POjVV19V2/JVgeWlO0ZLXlJmHxApl5NU1ZaGqnnz5tGSJUvUtvyFCxfSokWL1LZ8VWD54g6WLx48XxD9b/tSU1Plpmuyn6ZJW7ZsIScnp77eUix03n77bfLy8lJ/VCpkYmJCAEgqlSq85+PjM+AEsX79egJAa9eupStXrtxzeNp7JYj+yMZvv/sIhCyWiooKuekbN24kAJSWlsZNE4lEBICampruuz6RSERaWlp9dpAnT55MAKikpESpbSAi7rkMfZ3xs7OzIwByD3by8fEhoVBINTU13LTIyEj64IMPlF53798f6D4jGnyhU1lZKTd97ty5BIBaWlrkpgcHB5OJiYnCcpTdV33pr90MZT/++CPp6OioJUFKpdI+i9ChhuWlvo3UvKTMPiBSLiepqi0NVTt37iRHR0e1Ld/Gxob27NmjtuWrAssXfWP54o7BntHpi6b6aZp04cIFAkBVVVV3v6U4vHRbWxsMDQ3vnjxkdXR0QCqVwsDAAMbGxgrvW1tbD3hZe/fuxddff42CggKEhYXB1NQUCxYswLFjx5SKqbGxEW+99RZ8fHxgbm7OXeO4efNmAEBra2ufvycSieR+1tPTAwDuetiOjg40NjbCwMAAJiYm94xBNm9PTw9EIpHCdZjXrl0DAOTl5Sm1bTKWlpYQCAQK02X7u6qqipv26quvorW1Ff/6178A3LmJ/Pz583j++ecHte7e7rfPHpSpqancz1paWtDW1oZQKJSbrq2t3e86B7qvBttuhiKhUIju7m7cvn1b5cvu6OgAcGe4yaGK5aW+jdS8pMw+GMyyVdWWhioDA4P+r69Xgba2NpYvWL5QMBLzRW/9DZmu6X6aJsi+33ff3wX0MRiBt7c3JBKJRkZBUQV9fX2YmJigvb29z5GelNkOgUCA1atXIy4uDg0NDYiOjgYRISoqCh9//LHCvP1ZvHgxtm3bhrVr1yI3Nxc9PT0gInzyyScA7ox/Pxj6+voQiURob2+/543vsnnNzMygo6ODzs5OEFGfr9DQ0EHF0tjY2Od02Rend2JeuXIlbGxs8Omnn6KjowO7du3CmjVrNHoDuZaWVp+d7oaGBrWve6D7Sl3thg+//vor3Nzc1DKQiaWlJcaMGYOUlBSVL1tVWF7qf96RmJeU2QcyA81JqmxLQ1VycjI8PT3VtvwJEyYgOTlZbct/UCxf9D8vyxd3DKYPU1tb2+fnNFT7aQ8iKSkJpqamsLe3V3hPodCJioqCoaEh3nvvPY0EpwoLFy4EcGcUit5qamqQk5Mz4OWYmZkhOzsbAKCrq4u5c+dyI4qcPHlSbl6hUCjX6MaPH4/9+/eju7sbCQkJsLW1xYYNG2BlZcUlk74qTWUtXboUABAbG6vwnr+/PzZu3Mj9HBUVha6uLoXRvQDgww8/hJOTE7q6ugYVR3NzM9LS0uSmZWRkoKysDH5+fnLPRdDX18eLL76Iqqoq7Nq1C99++y1eeeWVQa13sMRiMUpLS+WmVVRUoLi4WO3rHsi+Une70aSSkhLs378fzz77rNrW8eSTT+Kzzz7j5YGDA8Xy0h2jJS8psw8A5XKSqtrSUFRUVIQjR47gySefVNs6Vq1ahe+//557ttBQxPLFHSxfPHi+kGlvb1c4IDiU+2mD1draij179uCJJ57o+0HhfV3r9uWXX5KWllafN0kNRfn5+WRhYSE3WklWVhbNnz+frK2tB3xtq0gkopCQEEpLS6P29naqrKykt99+mwAojOawYMECEolEVFxcTImJiaSjo0MSiYSIiObMmUMAaMeOHVRdXU2tra10/vx5cnJyIgB09uzZ+8ZCdOfmKtx1M5lspA6xWEwnTpygpqYmKikpofXr15ONjY3cKFSVlZU0duxYcnNzo9jYWGpoaKDa2lrat28fCYXCQX++sms/g4OD6bfffrvnaB4y1dXVZGhoSAKBgCIjIwe13t6U2WdERC+//DIBoD179pBUKqX8/Hxavnw52dvb3/MenbuXP3/+fNLW1laYPyQkpM/rYZXZV8q2m6GoqamJpk+fTt7e3tTa2qq29ZSXl5O5uTk999xzalvHg2J5aXTlJWX2AZFyOUlVbWmo6ejooJCQEPL29qb29na1raetrY0mTJhAs2fPVut6HgTLFyxfqCpfyLZPJBJRWFjYfUddU8f2adJzzz1HZmZmVFpa2tfbioMRyGzcuJF0dHRo//796otOhXJycmjJkiVkamrKDWd44sQJCgsLIwAEgJ599lk6duwY97PstXLlSiIiun79Or3wwgvk6elJQqGQLCwsaPr06XTgwAGFG9ays7Np1qxZZGRkRI6OjrR3717uverqanrhhRfI0dGRdHV1ycbGhp5++mnaunUrt86AgAC6cuWKQixvvvkmEZHC9IiICG75NTU19Oqrr5Krqyvp6uqSWCymxx9/nHJzcxX2S21tLW3atInc3NxIV1eXrKysaN68eYPqNMtuQgRA9vb2lJycTKGhoWRsbEyGhoYUEhJyz+E7165d2+eIZcoY7D5raGig5557jsRiMRkaGlJwcDClpKRQQEAAN/+WLVv6XX5KSorC9Pfff58uX76sMP1vf/vboPbVQNvNUFVWVkaBgYEkFos1MmpjdHQ0aWtr05///OchOxQ+y0ujIy/JKLMPBpqTZB6kLQGKo0vxra2tjaKiokgkEtH169fVvr7r16+TSCSiyMhItR6EeRAsX7B8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6yOi6BU+4RI+OTRbgJh6UiW83Gwnar6qJk5ffno9nH5iaLrptWvq8uGTNVNPTk1dPlwnp4YbIpp3DDpESlZZWYnCwkIcOXJE7qYQEcmK9ZAo6pxUf/0yREREREREiwuDDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhERERERKQ6DDhEtakePHoVKpYJKpUJsbOx9vbeurg5r165FXFyctI7W1lYMDAygtrYWmZmZ0vSampqHtAVERA8G6yFRJAYdIlrUDh48CCEEtm3bNmOex+NBfn4+du3aNWNeU1MTnnvuOWzfvh1DQ0Po6urCsmXLAAAvvPACLly4gP/85z9wuVz4yU9+8tC3g4jo/4v1kCjSErkbQET0sAghEAqFEAqFZsx77733IITAD3/4QyQkJCAhIQFWqxUjIyO4cOECXn31VZSWlgIAfvOb30AIMd/NJyJ6YFgPKRox6BCRYhkMBty+fXvWeVarFQCQnJz8tdPD3TWIiBYr1kOKRuy6RkRRKRgMfuV07siJKFqwHpJSMegQKVx3d7d0Bk6lUuHzzz/Ht7/9bRgMBiQnJ6O2thZ2ux09PT3YvXs3DAYDMjIy8PLLL8Ptdkesa3JyEu+99x62b98Os9kMvV6P0tJSvP322xHdISoqKiI+M3zjalVVVcR0h8Nx39vT0dGBvXv3wmg0Ij4+Hk888QQuX748Y7l//etfEZ/l8/kipn/44YcAAL1eH7Hchg0bAAC//vWvpWkXL16873YS0cLDesh6SFFGEJFibd26VXzve98TQgixZ88eAUDs27dPfPLJJ8Lj8Yi//OUvAoB45plnxJ49e8S1a9eE2+0W77zzjgAgfvSjH0Ws78SJEwKAeOONN8S9e/fE8PCw+OMf/yjUarX48Y9/HLFsS0uLiI+PF2VlZcLj8QghhPD5fGLjxo3i73//+5y2p7OzU5hMJpGVlSVOnz4t3G63uHHjhtixY4fIyckR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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Max Difference cudf to numba: 2.220446049250313e-16\n",
      "Max Difference cudf to cupy: 2.220446049250313e-16\n"
     ]
    }
   ],
   "source": [
    "verify_tspec = {\n",
    "    TaskSpecSchema.task_id: 'verify_cudf_to_numba',\n",
    "    TaskSpecSchema.node_type: VerifyNode,\n",
    "    TaskSpecSchema.conf: {\n",
    "        'df1_col': 'distance_cudf',\n",
    "        'df2_col': 'distance_numba'\n",
    "    },    \n",
    "    TaskSpecSchema.inputs: {\n",
    "        'df1': 'distance_by_cudf.distance_euclid_df',\n",
    "        'df2': 'distance_by_numba.distance_df'\n",
    "    }\n",
    "}\n",
    "\n",
    "verify_tspec2 = {\n",
    "    TaskSpecSchema.task_id: 'verify_cudf_to_cupy',\n",
    "    TaskSpecSchema.node_type: VerifyNode,\n",
    "    TaskSpecSchema.conf: {\n",
    "        'df1_col': 'distance_cudf',\n",
    "        'df2_col': 'distance_cupy'\n",
    "    },    \n",
    "    TaskSpecSchema.inputs: {\n",
    "        'df1': 'distance_by_cudf.distance_euclid_df',\n",
    "        'df2': 'distance_by_cupy.distance_df'\n",
    "    }\n",
    "}\n",
    "\n",
    "task_graph.extend([verify_tspec, verify_tspec2], replace=True)\n",
    "task_graph.draw(show='ipynb', show_ports=True)\n",
    "(max_cudf_to_numba_diff, max_cudf_to_cupy_diff) = task_graph.run([\n",
    "    'verify_cudf_to_numba.max_diff',\n",
    "    'verify_cudf_to_cupy.max_diff'\n",
    "])\n",
    "print('Max Difference cudf to numba: {}'.format(max_cudf_to_numba_diff))\n",
    "print('Max Difference cudf to cupy: {}'.format(max_cudf_to_cupy_diff))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Dask distributed computation\n",
    "\n",
    "Using Dask and `dask-cudf` we can run the Nodes with customized GPU kernels on distributed dataframes. Under the hood of the `Node` class the Dask delayed processing API is handled for cudf dataframes when the `self.delayed_process = True` flag is set.\n",
    "\n",
    "We first start a distributed Dask environment. When a dask client is instantiated it registers itself as the default Dask scheduler (<http://distributed.dask.org/en/latest/client.html>). Therefore all subsequent Dask distibuted dataframe operations will run in distributed fashion."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table style=\"border: 2px solid white;\">\n",
       "<tr>\n",
       "<td style=\"vertical-align: top; border: 0px solid white\">\n",
       "<h3 style=\"text-align: left;\">Client</h3>\n",
       "<ul style=\"text-align: left; list-style: none; margin: 0; padding: 0;\">\n",
       "  <li><b>Scheduler: </b>tcp://127.0.0.1:33611</li>\n",
       "  <li><b>Dashboard: </b><a href='http://127.0.0.1:8787/status' target='_blank'>http://127.0.0.1:8787/status</a>\n",
       "</ul>\n",
       "</td>\n",
       "<td style=\"vertical-align: top; border: 0px solid white\">\n",
       "<h3 style=\"text-align: left;\">Cluster</h3>\n",
       "<ul style=\"text-align: left; list-style:none; margin: 0; padding: 0;\">\n",
       "  <li><b>Workers: </b>4</li>\n",
       "  <li><b>Cores: </b>4</li>\n",
       "  <li><b>Memory: </b>270.39 GB</li>\n",
       "</ul>\n",
       "</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<Client: 'tcp://127.0.0.1:33611' processes=4 threads=4, memory=270.39 GB>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from dask_cuda import LocalCUDACluster\n",
    "from dask.distributed import Client\n",
    "\n",
    "cluster = LocalCUDACluster()\n",
    "client = Client(cluster)\n",
    "client"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The Dask status page can be displayed in a web browser at `<ip-address>:8787`. The ip-address corresponds to the machine where the dask cluster (scheduler) was launched. Most likely same ip-address as where this jupyter notebook is running. Using the Dask status page is convenient for monitoring dask distributed processing. <http://distributed.dask.org/en/latest/web.html>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The next step is to partition the `cudf` dataframe into a `dask_cudf` dataframe. Here we make the number of partitions corresponding to the number of workers:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "class DistributedNode(Node):\n",
    "\n",
    "    def ports_setup(self):\n",
    "        input_ports = {\n",
    "            'points_df_in': {\n",
    "                PortsSpecSchema.port_type: cudf.DataFrame\n",
    "            }\n",
    "        }\n",
    "\n",
    "        output_ports = {\n",
    "            'points_ddf_out': {\n",
    "                PortsSpecSchema.port_type: dask_cudf.DataFrame\n",
    "            }\n",
    "        }\n",
    "\n",
    "        return NodePorts(inports=input_ports, outports=output_ports)\n",
    "\n",
    "    def columns_setup(self,):\n",
    "        required = {\n",
    "            'x': 'float64',\n",
    "            'y': 'float64'\n",
    "        }\n",
    "\n",
    "        self.required = {\n",
    "            'points_df_in': required,\n",
    "            'points_ddf_out': required\n",
    "        }\n",
    "\n",
    "    def process(self, inputs):\n",
    "        npartitions = self.conf['npartitions']\n",
    "        df = inputs['points_df_in']\n",
    "        ddf = dask_cudf.from_cudf(df, npartitions=npartitions)\n",
    "        return {'points_ddf_out': ddf}\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We add this distribution node to the computation graph to convert `cudf` dataframes into `dask-cudf` dataframes. The `dask-cudf` dataframes are handled automatically in gQuant when `self.delayed_process=True` within a `Node` implementation (setup in `columns_setup`). When using nodes with ports with `self.delayed_process=True` setting, it is required that all input and output ports be of type `cudf.DataFrame`. Otherwise don't set  `self.delayed_process` and one can write custom logic to handle distributed dataframes (refer to `VerifyNode` abover for an example where `dask_cudf` dataframes are handled directly within the process method)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "npartitions = len(client.scheduler_info()['workers'])\n",
    "\n",
    "\n",
    "distribute_tspec = {\n",
    "    TaskSpecSchema.task_id: 'distributed_points',\n",
    "    TaskSpecSchema.node_type: DistributedNode,\n",
    "    TaskSpecSchema.conf: {'npartitions': npartitions},\n",
    "    TaskSpecSchema.inputs: {\n",
    "        'points_df_in': 'points_task.points_df_out'\n",
    "    }\n",
    "}\n",
    "\n",
    "dask_cudf_distance_tspec = {\n",
    "    TaskSpecSchema.task_id: 'distance_by_cudf',\n",
    "    TaskSpecSchema.node_type: DistanceNode,\n",
    "    TaskSpecSchema.conf: {},\n",
    "    TaskSpecSchema.inputs: {\n",
    "        'points_df_in': 'distributed_points.points_ddf_out'\n",
    "    }\n",
    "}\n",
    "\n",
    "dask_numba_distance_tspec = {\n",
    "    TaskSpecSchema.task_id: 'distance_by_numba',\n",
    "    TaskSpecSchema.node_type: NumbaDistanceNode,\n",
    "    TaskSpecSchema.conf: {},\n",
    "    TaskSpecSchema.inputs: {\n",
    "        'points_df_in': 'distributed_points.points_ddf_out'\n",
    "    }\n",
    "}\n",
    "\n",
    "dask_cupy_distance_tspec = {\n",
    "    TaskSpecSchema.task_id: 'distance_by_cupy',\n",
    "    TaskSpecSchema.node_type: CupyDistanceNode,\n",
    "    TaskSpecSchema.conf: {},\n",
    "    TaskSpecSchema.inputs: {\n",
    "        'points_df_in': 'distributed_points.points_ddf_out'\n",
    "    }\n",
    "}\n",
    "\n",
    "task_list = [\n",
    "    points_tspec,\n",
    "    distribute_tspec,\n",
    "    dask_cudf_distance_tspec,\n",
    "    dask_numba_distance_tspec,\n",
    "    dask_cupy_distance_tspec\n",
    "]\n",
    "\n",
    "task_graph = TaskGraph(task_list)\n",
    "task_graph.draw(show='ipynb', show_ports=True)\n",
    "\n",
    "out_list = [\n",
    "    'distributed_points.points_ddf_out',\n",
    "    'distance_by_cudf.distance_euclid_df',\n",
    "    'distance_by_numba.distance_df',\n",
    "    'distance_by_cupy.distance_df'\n",
    "]\n",
    "(points_ddf, ddf_w_cudf, ddf_w_numba, ddf_w_cupy) = task_graph.run(out_list)\n",
    "df_w_cudf = ddf_w_cudf.compute()\n",
    "df_w_numba = ddf_w_numba.compute()\n",
    "df_w_cupy = ddf_w_cupy.compute()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Verify the results:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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BzQmNzteTU2NePLJJ4W/v79wcnISnp6eYsOGDeKFF16Qap82bVq/a/v44497nfvvf//7PsdqzZo1Azqf27Fx40bh5eUlGhoahvzYREQyOKQQoo/J3EREdMt++9vf4rXXXkNqaioiIyOH/Pjh4eGora1FWVnZkB+brNt7772Hxx9/HHv37sUDDzwgdzlEREPhMKeuERENki1btiAhIQFLlizBqVOn5C6HCADw97//HU888QS2bNnCkENEdxUGHSKiQeLg4ICPP/4Yc+bMQWxsrNUsKUx3J7PZjNdeew2rV6/G008/jddee03ukoiIhhSDDhHRIFKpVNi/fz+ee+45rF+/HuvWretzFa/BtG3bNigUCpw7dw7l5eVQKBR4+eWX7+gx5dLzXTc3e7z66qtylym7uro6JCYm4je/+Q3++7//G9u3b7/pUttERPaI9+gQEd0h+/btw6OPPgp/f3/s2LFjwCuHEfWXEAIfffQR/t//+39wdHTE3r17MWPGDLnLIiKSA+/RISK6U5YvX45vvvkGAQEBiIuLwwMPPIBLly7JXRbZqezsbERGRmLdunVISEjAmTNnGHKI6K7GoENEdAcFBAQgOTkZR44cQX5+PiZNmoRf/vKXKCkpkbs0shOnT5/GqlWrMHPmTAwbNgzZ2dl455134OHhIXdpRESyYtAhIhoC8fHxyMnJwbZt23Do0CGMHz8eDz30EM6cOSN3aWSjjh49innz5mH69Om4ePEiPv30U3z11VeYMmWK3KUREVkFBh0ioiHi5OSEX/ziF7h48SL27NmDwsJCTJs2Dffffz/+93//F83NzXKXSFbu6tWr2L59O0JDQxEfHw+FQoGjR4/izJkzePDBB7ngABHRdbgYARGRjI4ePYp3330XycnJcHR0xIoVK7BhwwZER0fDwYH/FkVAR0cHUlJS8P777+OLL76AVqvFT37yEzz11FOYOnWq3OUREVmrwww6RERWoKGhAX//+9+xZ88eZGRkYMSIEVi0aBGWLFmCxYsXQ6vVyl0iDaG2tjakpqZi7969OHjwIJqamjB79mysW7cOa9as4fuBiOjHMegQEVmb/Px8fP755zhw4ABOnz4NrVaLhQsXYsmSJZg3bx58fHzkLpHugAsXLuD48eM4cOAA0tPTYTabcf/992Pp0qV44IEH4OfnJ3eJRES2hEGHiMialZeX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XBkREdmQwww6RERkNa5evQovL69e7a6urmhsbJShIiIislFcXpqIiKzH8OHD+7wnZ9SoUTJUQ0REtoxBh4iIrIZSqcQvfvELDBs2DACgUCigUCjwwgsvyFwZERHZGk5dIyIiq9LV1YW//OUv+N3vfgetVov//M//xIMPPih3WUREZFt4jw4REVmn2NhYBAcHY9euXXKXQuXVhpEAACAASURBVEREtof36BARERERkf1h0CEiIiIiIrvDoENERERERHaHQYeIiIiIiOwOgw4REREREdkdBh0iIiIiIrI7DDpERERERGR3GHSIiIiIiMjuMOgQEREREZHdYdAhIiIiIiK7w6BDRERERER2h0GHiIiIiIjsDoMOERERERHZHQYdIiIiIiKyOww6RERERERkdxh0iIiIiIjI7jDoEBERERGR3WHQISIiIiIiu8OgQ0REREREdodBh4iIiIiI7A6DDhERERER2R0GHSIiIiIisjsMOkREREREZHcYdIiIiOzAJ598AoVCAYVCAWdn5z77fPrppwgPD4darZb65ubmDnGlRERDg0GHiIjuWi0tLbjnnnuQmJgodym37aGHHoIQAnFxcX1uz8jIwMMPP4wFCxagpqYGRUVF8PPz6/f+7WmsiOju4Ch3AURERHIRQsBsNsNsNt/2vlxcXBAeHo4TJ04MQmWDb+/evRBCYNOmTXBxcYGLiwtKS0v7/frBHCsioqHAoENERHctnU6H4uJiucsYEj2hxsPDY0Cvv5vGiojsA6euERER3QW6u7vlLoGIaEgx6BARkdU6e/asdNO8n58fDAYD4uLioNPpoNFoEBMTg4yMjF6vq6urw7PPPougoCAolUoMHz4cixYtQlpamtRn//790r4VCgWMRmOf7d999x1WrVoFNzc3eHh4IDEx0eLKxrZt26BQKNDa2oqMjAzpdY6O/540YTKZ8MorryA4OBgajQbu7u5YsmQJkpOTBxxACgoKsGzZMuj1emi1WkRFRfU5ba7nfA4cOAAA0kIEs2bN6vexBmusiIiGlCAiIrJCMTEx4mc/+5kQQoiwsDCh1WrF7NmzRWZmpmhpaREGg0Hce++9QqlUivT0dOl1lZWVIiAgQHh6eoqDBw+KxsZGUVhYKFasWCEUCoXYvXu3xXGSkpIEANHe3t5ne1JSknTMY8eOCbVaLSIiInrVq9VqxZw5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EKmpqQOOsT/bQa2xsVFs3LhRODs7C1NTUxERESHS0tJEaGioFMNrr70mzX+v9U1EJIQ4IhOijw7PREREGhYVFQU/Pz98/PHHCA4ORm1tLa5du6bpsIiISDscZdc1IiIiIiLSOUx0iIiIiIhI5zDRISKiEevixYuQyWS4dOkSrl+/DplMht/97neaDmtIyGSy+z62bt3KGImI+slA0wEQERHdTXBwMFJSUjQdxrDQhktmtSFGIiI1tugQEREREZHOYaJDREREREQ6h4kOERERERHpHCY6RERERESkc5joEBERERGRzmGiQ0REREREOoeJDhERERER6RwmOkREREREpHOY6BARERERkc6RCd7mmIiINOyzzz7Dd99916MsIyMDcrkcfn5+Pco3btyI2NjY4QyPiIi0z1EmOkREpHHff/895s+ff9/5ZDIZiouL4enpOfRBERGRNjvKrmtERKRx0dHRsLW1vec8MpkM06ZNY5JDRET9wkSHiIg0zsDAAGvWrIGhoeFd59HT08P69euHMSoiItJmTHSIiGhEWL16Nbq6uu45z4oVK4YpGiIi0nZMdIiIaESYOXMm3Nzc+pymp6eHOXPmwNHRcZijIiIibcVEh4iIRgSZTIa1a9fetfvaunXrhjkiIiLSZhx1jYiIRozMzEwEBQX1Kjc0NERNTQ2srKw0EBUREWkhjrpGREQjR2BgIHx9fXuUGRgYIC4ujkkOERENCBMdIiIaUdatW9ej+5pSqcTatWs1GBEREWkjdl0jIqIRpbS0FF5eXlD/PJmZmaG2thampqYajoyIiLQIu64REdHIMnbsWISEhEAmk8HQ0BCrVq1ikkNERAPGRIeIiEac9evXQyaToaurC6tXr9Z0OEREpIXYdY2IiEac6upqODs7w8rKCtXV1TAwMNB0SEREpF3YdY2IiEae6upqeHl5YfLkyaisrNR0OEREpIWY6BAR0YjyxRdfICgoCKWlpUhNTcWECRNw9uxZTYdFRERahl3XiIhoxBBCwNraGjdv3pTK9PX1MXXqVCY7REQ0EOy6RkREI0dVVVWPJAe4dR+dnJwcDUVERETaild3EhGRxt28eRMFBQUoKCiAqakp2trapGl6enpwcHDAv/71L4wbNw7jxo3DmDFjNBgtERFpAyY6REQ0LFpaWlBQUIDCwkIpqVE/bty4AQAwMDDAvHnz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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "HEAD points_ddf:\n",
      "          x         y\n",
      "0  0.994778  0.920240\n",
      "1  0.536145  0.522197\n",
      "2  0.552025  0.939834\n",
      "3  0.597529  0.873719\n",
      "4  0.374750  0.841134\n",
      "\n",
      "HEAD df_w_cudf:\n",
      "          x         y  distance_cudf\n",
      "0  0.994778  0.920240       1.355147\n",
      "1  0.536145  0.522197       0.748426\n",
      "2  0.552025  0.939834       1.089963\n",
      "3  0.597529  0.873719       1.058502\n",
      "4  0.374750  0.841134       0.920839\n",
      "\n",
      "HEAD df_w_numba:\n",
      "          x         y  distance_numba\n",
      "0  0.994778  0.920240        1.355147\n",
      "1  0.536145  0.522197        0.748426\n",
      "2  0.552025  0.939834        1.089963\n",
      "3  0.597529  0.873719        1.058502\n",
      "4  0.374750  0.841134        0.920839\n",
      "\n",
      "HEAD df_w_cupy:\n",
      "          x         y  distance_cupy\n",
      "0  0.994778  0.920240       1.355147\n",
      "1  0.536145  0.522197       0.748426\n",
      "2  0.552025  0.939834       1.089963\n",
      "3  0.597529  0.873719       1.058502\n",
      "4  0.374750  0.841134       0.920839\n",
      "\n",
      "Max Difference cudf to numba: 2.220446049250313e-16\n",
      "Max Difference cudf to cupy: 2.220446049250313e-16\n"
     ]
    }
   ],
   "source": [
    "verify_cudf_numba_tspec = verify_tspec.copy()\n",
    "verify_cudf_cupy_tspec = verify_tspec2.copy()\n",
    "\n",
    "task_graph.extend(\n",
    "    [verify_cudf_numba_tspec,\n",
    "     verify_cudf_cupy_tspec],\n",
    "    replace=True)\n",
    "task_graph.draw(show='ipynb', show_ports=True)\n",
    "\n",
    "# Use results above and avoid re-running dask\n",
    "replace_spec = {\n",
    "    'distance_by_cudf': {\n",
    "        TaskSpecSchema.load: {\n",
    "            'distance_euclid_df': ddf_w_cudf\n",
    "        }\n",
    "    },\n",
    "    'distance_by_numba': {\n",
    "        TaskSpecSchema.load: {\n",
    "            'distance_df': ddf_w_numba\n",
    "        }\n",
    "    },\n",
    "    'distance_by_cupy': {\n",
    "        TaskSpecSchema.load: {\n",
    "            'distance_df': ddf_w_cupy\n",
    "        }\n",
    "    }\n",
    "}\n",
    "\n",
    "(max_cudf_to_numba_diff, max_cudf_to_cupy_diff) = task_graph.run(\n",
    "    ['verify_cudf_to_numba.max_diff',\n",
    "     'verify_cudf_to_cupy.max_diff'],\n",
    "    replace=replace_spec\n",
    ")\n",
    "\n",
    "print('HEAD points_ddf:\\n{}\\n'.format(points_ddf.head()))\n",
    "print('HEAD df_w_cudf:\\n{}\\n'.format(ddf_w_cudf.head()))\n",
    "print('HEAD df_w_numba:\\n{}\\n'.format(ddf_w_numba.head()))\n",
    "print('HEAD df_w_cupy:\\n{}\\n'.format(ddf_w_cupy.head()))\n",
    "print('Max Difference cudf to numba: {}'.format(max_cudf_to_numba_diff))\n",
    "print('Max Difference cudf to cupy: {}'.format(max_cudf_to_cupy_diff))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "One limitation to be aware of when using customized kernels within Nodes in the Dask environment, is that each GPU kernel works on one partition of the dataframe. Therefore if the computation depends on other partitions of the dataframe the approach above does not work."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Saving Custom Nodes and Kernels\n",
    "\n",
    "The gQuant examples already implement a number of `Nodes`. These can be found in `gquant.plugin_nodes` submodules.\n",
    "\n",
    "The customized kernels and nodes can be saved to your own python modules for future re-use instead of having to re-define them at runtime. The nodes we defined above were to a written to a python module \"custom_port_nodes.py\" (the `DistanceNode` was simplified to ommit the absolute distance calculation). We will re-run our workflow importing the Nodes from the custom module we wrote out.\n",
    "\n",
    "When defining the tasks we specify `filepath` for the path to the python module that has the Node definition. Notice, that the `node_type` is specified as a string instead of class. The string is the class name of the node that will be imported for running a task."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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BzQmNzteTU2NePLJJ4W/v79wcnISnp6eYsOGDeKFF16Qap82bVq/a/v44497nfvvf//7PsdqzZo1Azqf27Fx40bh5eUlGhoahvzYREQyOKQQoo/J3EREdMt++9vf4rXXXkNqaioiIyOH/Pjh4eGora1FWVnZkB+brNt7772Hxx9/HHv37sUDDzwgdzlEREPhMKeuERENki1btiAhIQFLlizBqVOn5C6HCADw97//HU888QS2bNnCkENEdxUGHSKiQeLg4ICPP/4Yc+bMQWxsrNUsKUx3J7PZjNdeew2rV6/G008/jddee03ukoiIhhSDDhHRIFKpVNi/fz+ee+45rF+/HuvWretzFa/BtG3bNigUCpw7dw7l5eVQKBR4+eWX7+gx5dLzXTc3e7z66qtylym7uro6JCYm4je/+Q3++7//G9u3b7/pUttERPaI9+gQEd0h+/btw6OPPgp/f3/s2LFjwCuHEfWXEAIfffQR/t//+39wdHTE3r17MWPGDLnLIiKSA+/RISK6U5YvX45vvvkGAQEBiIuLwwMPPIBLly7JXRbZqezsbERGRmLdunVISEjAmTNnGHKI6K7GoENEdAcFBAQgOTkZR44cQX5+PiZNmoRf/vKXKCkpkbs0shOnT5/GqlWrMHPmTAwbNgzZ2dl455134OHhIXdpRESyYtAhIhoC8fHxyMnJwbZt23Do0CGMHz8eDz30EM6cOSN3aWSjjh49innz5mH69Om4ePEiPv30U3z11VeYMmWK3KUREVkFBh0ioiHi5OSEX/ziF7h48SL27NmDwsJCTJs2Dffffz/+93//F83NzXKXSFbu6tWr2L59O0JDQxEfHw+FQoGjR4/izJkzePDBB7ngABHRdbgYARGRjI4ePYp3330XycnJcHR0xIoVK7BhwwZER0fDwYH/FkVAR0cHUlJS8P777+OLL76AVqvFT37yEzz11FOYOnWq3OUREVmrwww6RERWoKGhAX//+9+xZ88eZGRkYMSIEVi0aBGWLFmCxYsXQ6vVyl0iDaG2tjakpqZi7969OHjwIJqamjB79mysW7cOa9as4fuBiOjHMegQEVmb/Px8fP755zhw4ABOnz4NrVaLhQsXYsmSJZg3bx58fHzkLpHugAsXLuD48eM4cOAA0tPTYTabcf/992Pp0qV44IEH4OfnJ3eJRES2hEGHiMialZeX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XBkREdmQwww6RERkNa5evQovL69e7a6urmhsbJShIiIislFcXpqIiKzH8OHD+7wnZ9SoUTJUQ0REtoxBh4iIrIZSqcQvfvELDBs2DACgUCigUCjwwgsvyFwZERHZGk5dIyIiq9LV1YW//OUv+N3vfgetVov//M//xIMPPih3WUREZFt4jw4REVmn2NhYBAcHY9euXXKXQuXVhpEAACAASURBVEREtof36BARERERkf1h0CEiIiIiIrvDoENERERERHaHQYeIiIiIiOwOgw4REREREdkdBh0iIiIiIrI7DDpERERERGR3GHSIiIiIiMjuMOgQEREREZHdYdAhIiIiIiK7w6BDRERERER2h0GHiIiIiIjsDoMOERERERHZHQYdIiIiIiKyOww6RERERERkdxh0iIiIiIjI7jDoEBERERGR3WHQISIiIiIiu8OgQ0REREREdodBh4iIiIiI7A6DDhERERER2R0GHSIiIiIisjsMOkREREREZHcYdIiIiOzAJ598AoVCAYVCAWdn5z77fPrppwgPD4darZb65ubmDnGlRERDg0GHiIjuWi0tLbjnnnuQmJgodym37aGHHoIQAnFxcX1uz8jIwMMPP4wFCxagpqYGRUVF8PPz6/f+7WmsiOju4Ch3AURERHIRQsBsNsNsNt/2vlxcXBAeHo4TJ04MQmWDb+/evRBCYNOmTXBxcYGLiwtKS0v7/frBHCsioqHAoENERHctnU6H4uJiucsYEj2hxsPDY0Cvv5vGiojsA6euERER3QW6u7vlLoGIaEgx6BARkdU6e/asdNO8n58fDAYD4uLioNPpoNFoEBMTg4yMjF6vq6urw7PPPougoCAolUoMHz4cixYtQlpamtRn//790r4VCgWMRmOf7d999x1WrVoFNzc3eHh4IDEx0eLKxrZt26BQKNDa2oqMjAzpdY6O/540YTKZ8MorryA4OBgajQbu7u5YsmQJkpOTBxxACgoKsGzZMuj1emi1WkRFRfU5ba7nfA4cOAAA0kIEs2bN6vexBmusiIiGlCAiIrJCMTEx4mc/+5kQQoiwsDCh1WrF7NmzRWZmpmhpaREGg0Hce++9QqlUivT0dOl1lZWVIiAgQHh6eoqDBw+KxsZGUVhYKFasWCEUCoXYvXu3xXGSkpIEANHe3t5ne1JSknTMY8eOCbVaLSIiInrVq9VqxZw5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7Uo9evSo1ohUFJwvOF80V77o3bs3WVlZ0f3792nEiBGko6PT6p+vpeXm5tKIESPIwMCAbt++XdtotRc6RES//fYb6erqkqura7U95Iw11K5duxS6oc4ap7S0lP7zn/+QqqoqjR49mnJyclpt3uHh4WRqakp9+vShBw8etNp8WfvBean1Xbx4kaysrKh79+705MmTVptvfHw89ezZk8zMzOjPP/9stfmy9qOt5AtpodNQbeXz3bp1i7p3704WFhZ07dq1ukat3utaVX5+fvjnn38gFovRr18/BAQEICMjo663MFarrVu3tqlrv9jLnThxAr1790ZgYCBWr16NY8eOVet1pyUNGDAA4eHhUFFRwSuvvIK1a9cqdO9KTPFwXmo92dnZWLhwITw9PfHqq6/i77//hq2tbavNv3PnzggLC8PQoUMxcuRIzJkzB1lZWa02f9b2tfd8oeifr6ioCMuWLUP//v1hbGyMa9euoV+/fnW/qT6Vk0Qioe3bt5O5uTlpa2vT559/rrDnuTLFsX37dhozZgzl5+fTDz/8QF27dqXy8nKhw2JNJJFIKCQkhAYOHEgikYj8/PwoLi5O0JjKyspo2bJlpK6uTk5OTnTs2LEWPeeftV2cl1pfUVERrVmzhgwNDcnY2Jh27doldEh08OBBsrCwIH19ffr2229b5J5frO1rq/mivkd02srnKy8vp927d5O1tTXp6OjQ+vXra7o5aE3qPnXtRQUFBRQYGEgmJiYkFotp+vTpdP369cZFzRQGajif+8XH0qVLGzzd7du3EwBSUVGhXr16UURERKvHwJpPbm4ubdu2jZydnUkkEtGoUaNedsi41T1+/JjefvttEolE5OrqSocPH67zhnlMcXFeavuKioooKCiIOnXqRFpaWvTll1/WeONHoeTn59MXX3xBWlpaZGpqSoGBgZSVlSV0WKwROF88V/UaJOlDes1UTRry+YRQWFhIO3bsoC5dupCKigrNnDmTUlJSGjKJhhU6UkVFRbIGDwDq3r07ff311wp7gR9jrHHKy8vp+PHjNHHiRNLQ0CB1dXV6//3367rwTyFERESQr68vKSkpkbW1NS1fvpySkpKEDouxDuHBgwc0f/58MjAwIDU1NZo7d25DGyetKj09nZYsWUK6urqkrq5OU6ZMaRMXYzPWXkVGRtJHH31E+vr6pKamRtOnT6eY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Nvw8okzU9gwGQ5NnG6qrq6HT6VBRUQGdTic9r66ulnLjzc9ra2vNCojWZjpIZIob+D3fNTwY09pM+cjBwQEqlUrKW009d3R0lA6COTo6wsHBoclChog6PRY61HWYznwAvxcfDXcITMVUQ6YzK7dycyH1wQcfwM/PD3PnzpXaGp5JakpTZ5KcnJxgY2MD4PcNfMOiquGZKiKiWzGdKTGd8QWaPlNi0jBP3qzhPICm893tCoibc13DM0+mM1MN59EeZ9SJqFNjoUPUmmJjY9GrVy989tlncodCRNSmmO+IqIPbyY6mRERERETU6bDQISIiIiKiToeFDhERERERdTosdIiIiIiIqNNhoUNERERERJ0OCx0iIiIiIup0WOgQEREREVGnw0KHiIiIiIg6HRY6RERERETU6bDQISIiIiKiToeFDhERERERdTosdIiIiIiIqNNhoUNERERERJ0OCx0iIiIiIup0WOgQEREREVGnw0KHiIiIiIg6HRY6RERERETU6bDQISIiIiKiToeFDhERERERdTosdIiIiIiIqNNhoUNERERERJ0OCx0iIiIiIup0WOgQEREREVGnw0KHiJpl48aNUCgUUCgUsLe3b9ZnExMTMWDAADg4OEjzSElJQWFhIRYsWAB/f3+pff78+W20BkREd4f5jsiysdAhomaZM2cOhBAYN25co/e0Wi169OiBBx98sNF7R44cwezZszFhwgQUFxfj8uXLCAwMBADMnTsX+/btw08//YTKykq89NJLbb4eRER3wnxHZNms5Q6AiDoPIQSMRiOMRmOj9zZt2gQhBJYtWwYnJyc4OTkhJycHpaWl2LdvH5599llERUUBAFatWgUhRHuHT0R015jviDo+FjpE1GqcnZ1x5cqVJt/LyckBAHh6et6x3dSdg4ioo2K+I+r42HWNiNqFwWC4bTs39ETUWTDfEXUMLHSIWllmZqZ0hE6hUODq1at4+OGH4ezsDE9PTyxYsADl5eXIysrClClT4OzsDLVajcWLF6OqqspsXvX19di0aRMmTJgAPz8/qFQqREVFYfXq1WbdJWJiYsyWabqwdfz48WbtFRUVzV6ftLQ0TJ06Fa6urnB0dMSoUaOQlJTUaLoff/zRbFk1NTVm7Vu2bAEAqFQqs+mGDBkCAHjrrbektv379zc79nbVUwAAB5RJREFUTiJqf8x3zHdEHZogolYzduxY8fTTTwshhIiPjxcAxPTp08Xx48eFVqsV69atEwDEpEmTRHx8vDh16pSoqqoSCQkJAoB44YUXzOa3bds2AUCsXLlSXLt2TZSUlIiPPvpIKJVK8Ze//MVs2tOnTwtHR0cRHR0ttFqtEEKImpoaMWzYMPHdd9+1aH0uXbok3NzcREBAgPj5559FVVWVOHv2rHjggQdEt27dhJ2dXaPPmNZbp9Pdst1oNAqDwSDq6+vF0aNHBQDx2muvCb1eL/R6vTAajS2Kl4jaD/Md8x1RB7eDhQ5RK2pqw79jxw6zafr06SMAiAMHDpi1h4aGioiICLO2bdu2iTFjxjRazvz584WNjY3QaDRm7f/+97+lnQ2j0Sgee+wx8de//rXF6zNr1iwBQCQmJpq15+XlCTs7uxZv+BtKTk4WAMQbb7zR4jiJqP0x3zHfEXVwO9h1jaiNDR482Oy1v79/k+0BAQHIz883a3vwwQexb9++RvOMjo6GXq9HamqqWfusWbPwt7/9Df/5z38QExODsrIyrFixosWx79q1CwAwceLERuvQs2fPFs+XiDon5jsi6kg46hpRG3NxcTF7rVQqYWVlBQcHB7N2KyurRsOUajQavP/++/jhhx+Qm5vbqM95dXV1o+WtWLECv/zyCw4fPoyvv/4aSmXLjmfU1taiqqoK9vb2cHJyavS+j48PLl682KJ5E1HnxHxHRB0Jz+gQdWBTpkzBihUrsHjxYly8eBFGoxFCCHz44YcA0OS9F/bv3w+NRoOoqCg888wzOHPmTIuWbWdnB2dnZ9TU1ECr1TZ6/9q1ay2aLxFRU5jviKi1sdAh6qAMBgMOHToEPz8/LF26FN7e3tKQpDqdrsnPZGZmYtGiRdi8eTO2bt0KlUqF+Ph4lJSUtCiGSZMmAfi9S4dJaWkp0tPTWzRPIqKbMd8RUVtgoUPUQVlZWWHMmDEoLCzEP/7xD5SWlkKn02Hfvn1ISEhoNL1Wq8XUqVPxz3/+E5GRkejWrRsSExORn5+PmTNnQq/XNzuGlStXwsPDA88//zx2794NrVaL8+fPY/78+U127yAiagnmOyJqE/IOhkDUuYwdO1ZMnz5dADB7/O1vf5NG22n4eOedd8TBgwcbtZtG5CkpKRFLliwRQUFBwsbGRvj6+oqFCxeK5cuXS9MOGjRIPPvss2afP3funCgpKWk03xUrVjR7ndLT08XUqVOFi4uLUKlUYsiQIWL79u1i3Lhx0nwXLVokfvjhh0bLmzdvXpPtAMSRI0dEnz59hJWVlQAgFAqFsLKyEtOnT2/lfxUiagvMd8x3RB3cDoUQTXR6JaIWiY2NRa9evfDZZ5/JHQoRUZtiviOiDm4nu64REREREVGnw0KHiIiIiIg6HRY6RF2MQqG44+PNN9+UO0wionvGfEfUtfGGoURdDC/LI6KugvmOqGvjGR0iIiIiIup0WOgQEREREVGnw0KHiIiIiIg6HRY6RERERETU6bDQISIiIiKiToeFDhERERERdTosdIiIiIiIqNNhoUNERERERJ0ObxhK1ELXr19HXV2dWVt9fT1qa2tRXl5u1m5vbw+VStWe4RERtRrmOyKyRArB2wYTtciKFSvw+uuv39W0//73vzFr1qw2joiIqG0w3xGRBdrJQoeohS5fvowePXrccTqVSoWysjIe4SQii8V8R0QWaCev0SFqofDwcAwYMAAKheKW09jY2GDWrFnc6BORRWO+IyJLxEKH6B48+uijsLKyuuX7er0ec+fObceIiIjaBvMdEVkadl0jugcFBQUIDAyE0Whs8n03NzeUlJTA2prjfhCRZWO+IyILw65rRPdCrVZj1KhRTR7ltLGxwbx587jRJ6JOgfmOiCwNCx2ie7RgwYIm2/V6PR555JF2joaIqO0w3xGRJWHXNaJ7VFFRAR8fH+j1erN2tVqNvLy82168S0RkSZjviMiCsOsa0b1yc3NDXFycWZcNGxsbPPbYY9zoE1GnwnxHRJaEhQ5RK5g3bx4MBoP0mt04iKizYr4jIkvBrmtEraCmpgaenp6orq4GcOOeE5cuXZI5KiKi1sd8R0QWgl3XiFqDvb09pk2bBhsbG6kbBxFRZ8R8R0SWgoUOUSuZO3cu9Ho99Ho95syZI3c4RERthvmOiCwBu64RtRK9Xg8fHx+EhYXhxIkTcodDRNRmmO+IyAKw6xpRa6iqqsJLL70EvV6Pq1ev4t133zW7WJeIqLNgviMiS2H15ptvvil3EESWbsGCBfjmm29QU1MDnU6H/fv3w9raGvfff7/coRERtSrmOyKyEJfYdY3oHlVXV8PZ2RlGo9GsPSgoCNnZ2TJFRUTU+pjviMiCsOsa0b3S6XSNNvoAoNVqZYiGiKjtMN8RkSVhoUN0jzw9PdGvX79GdwqfPHmyjFEREbU+5jsisiQsdIhawffff4+ePXtKr0eNGoWPPvpIxoiIiNoG8x0RWQpeo0PUSoQQyMrKgr29PdRqtdzhEBG1GeY7IrIAO1noEBERERFRZ8PBCIiIiIiIqPNhoUNERERERJ2ONYAMuYMgIiIiIiJqRYX/H64KDF5aiBORAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "npartitions = len(client.scheduler_info()['workers'])\n",
    "\n",
    "points_tspec = {\n",
    "    TaskSpecSchema.task_id: 'points_task',\n",
    "    TaskSpecSchema.node_type: 'PointNode',\n",
    "    TaskSpecSchema.filepath: 'custom_port_nodes.py',\n",
    "    TaskSpecSchema.conf: {'npts': 1000},\n",
    "    TaskSpecSchema.inputs: {},\n",
    "}\n",
    "\n",
    "distribute_tspec = {\n",
    "    TaskSpecSchema.task_id: 'distributed_points',\n",
    "    TaskSpecSchema.node_type: 'DistributedNode',\n",
    "    TaskSpecSchema.filepath: 'custom_port_nodes.py',\n",
    "    TaskSpecSchema.conf: {'npartitions': npartitions},\n",
    "    TaskSpecSchema.inputs: {\n",
    "        'points_df_in': 'points_task.points_df_out'\n",
    "    }\n",
    "}\n",
    "\n",
    "dask_cudf_distance_tspec = {\n",
    "    TaskSpecSchema.task_id: 'distance_by_cudf',\n",
    "    TaskSpecSchema.node_type: 'DistanceNode',\n",
    "    TaskSpecSchema.filepath: 'custom_port_nodes.py',\n",
    "    TaskSpecSchema.conf: {},\n",
    "    TaskSpecSchema.inputs: {\n",
    "        'points_df_in': 'distributed_points.points_ddf_out'\n",
    "    }\n",
    "}\n",
    "\n",
    "dask_numba_distance_tspec = {\n",
    "    TaskSpecSchema.task_id: 'distance_by_numba',\n",
    "    TaskSpecSchema.node_type: 'NumbaDistanceNode',\n",
    "    TaskSpecSchema.filepath: 'custom_port_nodes.py',\n",
    "    TaskSpecSchema.conf: {},\n",
    "    TaskSpecSchema.inputs: {\n",
    "        'points_df_in': 'distributed_points.points_ddf_out'\n",
    "    }\n",
    "}\n",
    "\n",
    "dask_cupy_distance_tspec = {\n",
    "    TaskSpecSchema.task_id: 'distance_by_cupy',\n",
    "    TaskSpecSchema.node_type: 'CupyDistanceNode',\n",
    "    TaskSpecSchema.filepath: 'custom_port_nodes.py',\n",
    "    TaskSpecSchema.conf: {},\n",
    "    TaskSpecSchema.inputs: {\n",
    "        'points_df_in': 'distributed_points.points_ddf_out'\n",
    "    }\n",
    "}\n",
    "\n",
    "verify_cudf_to_numba_tspec = {\n",
    "    TaskSpecSchema.task_id: 'verify_cudf_to_numba',\n",
    "    TaskSpecSchema.node_type: 'VerifyNode',\n",
    "    TaskSpecSchema.filepath: 'custom_port_nodes.py',\n",
    "    TaskSpecSchema.conf: {\n",
    "        'df1_col': 'distance_cudf',\n",
    "        'df2_col': 'distance_numba'\n",
    "    },    \n",
    "    TaskSpecSchema.inputs: {\n",
    "        'df1': 'distance_by_cudf.distance_df',\n",
    "        'df2': 'distance_by_numba.distance_df'\n",
    "    }\n",
    "}\n",
    "\n",
    "verify_cudf_to_cupy_tspec = {\n",
    "    TaskSpecSchema.task_id: 'verify_cudf_to_cupy',\n",
    "    TaskSpecSchema.node_type: 'VerifyNode',\n",
    "    TaskSpecSchema.filepath: 'custom_port_nodes.py',\n",
    "    TaskSpecSchema.conf: {\n",
    "        'df1_col': 'distance_cudf',\n",
    "        'df2_col': 'distance_cupy'\n",
    "    },    \n",
    "    TaskSpecSchema.inputs: {\n",
    "        'df1': 'distance_by_cudf.distance_df',\n",
    "        'df2': 'distance_by_cupy.distance_df'\n",
    "    }\n",
    "}\n",
    "\n",
    "task_list = [\n",
    "    points_tspec,\n",
    "    distribute_tspec,\n",
    "    dask_cudf_distance_tspec,\n",
    "    dask_numba_distance_tspec,\n",
    "    dask_cupy_distance_tspec,\n",
    "    verify_cudf_to_numba_tspec,\n",
    "    verify_cudf_to_cupy_tspec\n",
    "]\n",
    "\n",
    "task_graph = TaskGraph(task_list)\n",
    "task_graph.draw(show='ipynb', show_ports=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "HEAD df_w_cudf:\n",
      "          x         y  distance_cudf\n",
      "0  0.952256  0.706716       1.185849\n",
      "1  0.647146  0.038779       0.648307\n",
      "2  0.872885  0.094287       0.877962\n",
      "3  0.525044  0.096420       0.533824\n",
      "4  0.319330  0.745514       0.811026\n",
      "\n",
      "HEAD df_w_numba:\n",
      "          x         y  distance_numba\n",
      "0  0.952256  0.706716        1.185849\n",
      "1  0.647146  0.038779        0.648307\n",
      "2  0.872885  0.094287        0.877962\n",
      "3  0.525044  0.096420        0.533824\n",
      "4  0.319330  0.745514        0.811026\n",
      "\n",
      "HEAD df_w_cupy:\n",
      "          x         y  distance_cupy\n",
      "0  0.952256  0.706716       1.185849\n",
      "1  0.647146  0.038779       0.648307\n",
      "2  0.872885  0.094287       0.877962\n",
      "3  0.525044  0.096420       0.533824\n",
      "4  0.319330  0.745514       0.811026\n",
      "\n",
      "Max Difference cudf to numba: 2.220446049250313e-16\n",
      "Max Difference cudf to cupy: 2.220446049250313e-16\n"
     ]
    }
   ],
   "source": [
    "out_list = [\n",
    "    'distance_by_cudf.distance_df',\n",
    "    'distance_by_numba.distance_df',\n",
    "    'distance_by_cupy.distance_df',\n",
    "    'verify_cudf_to_numba.max_diff',\n",
    "    'verify_cudf_to_cupy.max_diff'\n",
    "]\n",
    "\n",
    "(ddf_w_cudf, ddf_w_numba, ddf_w_cupy,\n",
    " mdiff_cudf_to_numba, mdiff_cudf_to_cupy) = task_graph.run(out_list)\n",
    "\n",
    "print('HEAD df_w_cudf:\\n{}\\n'.format(ddf_w_cudf.head()))\n",
    "print('HEAD df_w_numba:\\n{}\\n'.format(ddf_w_numba.head()))\n",
    "print('HEAD df_w_cupy:\\n{}\\n'.format(ddf_w_cupy.head()))\n",
    "print('Max Difference cudf to numba: {}'.format(mdiff_cudf_to_numba))\n",
    "print('Max Difference cudf to cupy: {}'.format(mdiff_cudf_to_cupy))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The final illustration is how to save and load a task graph to a file for re-use."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "task_graph.save_taskgraph('custom_wflow.yaml')\n",
    "task_graph = TaskGraph.load_taskgraph('custom_wflow.yaml')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "HEAD df_w_cudf:\n",
      "          x         y  distance_cudf\n",
      "0  0.412709  0.196911       0.457277\n",
      "1  0.753898  0.940824       1.205617\n",
      "2  0.606489  0.682263       0.912859\n",
      "3  0.610318  0.000360       0.610318\n",
      "4  0.374492  0.268757       0.460950\n",
      "\n",
      "HEAD df_w_numba:\n",
      "          x         y  distance_numba\n",
      "0  0.412709  0.196911        0.457277\n",
      "1  0.753898  0.940824        1.205617\n",
      "2  0.606489  0.682263        0.912859\n",
      "3  0.610318  0.000360        0.610318\n",
      "4  0.374492  0.268757        0.460950\n",
      "\n",
      "HEAD df_w_cupy:\n",
      "          x         y  distance_cupy\n",
      "0  0.412709  0.196911       0.457277\n",
      "1  0.753898  0.940824       1.205617\n",
      "2  0.606489  0.682263       0.912859\n",
      "3  0.610318  0.000360       0.610318\n",
      "4  0.374492  0.268757       0.460950\n",
      "\n",
      "Max Difference cudf to numba: 2.220446049250313e-16\n",
      "Max Difference cudf to cupy: 2.220446049250313e-16\n"
     ]
    }
   ],
   "source": [
    "# update npartitions in case the scheduler is running with\n",
    "# different number of workers than what was saved.\n",
    "npartitions = len(client.scheduler_info()['workers'])\n",
    "replace_spec = {\n",
    "    'distributed_points': {\n",
    "        TaskSpecSchema.conf: {'npartitions': npartitions},\n",
    "    }\n",
    "}\n",
    "\n",
    "out_list = [\n",
    "    'distance_by_cudf.distance_df',\n",
    "    'distance_by_numba.distance_df',\n",
    "    'distance_by_cupy.distance_df',\n",
    "    'verify_cudf_to_numba.max_diff',\n",
    "    'verify_cudf_to_cupy.max_diff'\n",
    "]\n",
    "\n",
    "(ddf_w_cudf, ddf_w_numba, ddf_w_cupy,\n",
    " mdiff_cudf_to_numba, mdiff_cudf_to_cupy) = task_graph.run(\n",
    "    out_list, replace=replace_spec)\n",
    "\n",
    "print('HEAD df_w_cudf:\\n{}\\n'.format(ddf_w_cudf.head()))\n",
    "print('HEAD df_w_numba:\\n{}\\n'.format(ddf_w_numba.head()))\n",
    "print('HEAD df_w_cupy:\\n{}\\n'.format(ddf_w_cupy.head()))\n",
    "print('Max Difference cudf to numba: {}'.format(mdiff_cudf_to_numba))\n",
    "print('Max Difference cudf to cupy: {}'.format(mdiff_cudf_to_cupy))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Conclusion\n",
    "\n",
    "Using customized GPU kernels allows data scientists to implement and incorporate advanced algorithms. We demonstrated implementations using Numba and CuPy.\n",
    "\n",
    "The Numba approach enables data scientists to write GPU kernels directly in the Python language. Numba is easy to use for implementing and accelerating computations. However there is some overhead incurred for compiling the kernels whenever the Numba GPU kernels are used for the first time in a Python process. Currently Numba library only supports primitive data types. Some advanced CUDA programming features, such as function pointers and function recursions are not supported. \n",
    "\n",
    "The Cupy method is very flexible, because data scientists are writing C/C++ GPU kernels with CUDA directly. All the CUDA programming features are supported. CuPy compiles the kernel and caches the device code to the filesystem. The launch overhead is low. Also, the GPU kernel is built statically resulting in runtime efficiency. However it might be harder for data scientists to use, because C/C++ programming is more complicated. \n",
    "\n",
    "Below is a brief summary comparison table:\n",
    "\n",
    "| Methods | Development Difficulty | Flexibility | Efficiency | Latency |\n",
    "|---|---|---|---|---|\n",
    "| Numba method | medium | medium | low | high |\n",
    "| CuPy method | hard | high  | high | low |\n",
    "\n",
    "We recommend that the data scientists select the approach appropriate for their task taking into consideration the efficiency, latency, difficulty and flexibility of their workflow. \n",
    "\n",
    "In this blog, we showed how to wrap the customized GPU kernels in gQuant nodes. Also, by taking advantage of having the gQuant handle the low-level Dask interfaces for the developer, we demonstrated how to use the gQuant workflow with Dask distributed computations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Clean up\n",
    "\n",
    "# Shutdown the Dask cluster\n",
    "client.close()\n",
    "cluster.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
